C++ STL常用算法
STL
没有金刚钻,也木有刷子
个人学习记录而已,主要供自己查看,如有不当请见谅。
展开
-
STL--全排列函数
1.函数 std::next_permutation(first, last)2.用法的前提下是序列在有序的情况下;#include <algorithm>#include <string>#include <iostream>int main(){ std::string s = "abc"; std::sort(s.begin(), s.end()); do { std::cout << s ..原创 2022-01-16 12:59:03 · 637 阅读 · 0 评论 -
c++的bitset运用
1.功能:C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间。 //基本用法 bitset<4> bitset1; //无参构造,长度为4,默认每一位为0 bitset<8> bitset2(12); //长度为8,二进制保存,前面用0补充 string s = "100101"; bitset<10> bitset3(s); //长度原创 2021-07-18 14:56:17 · 225 阅读 · 0 评论 -
new操作符
1.C++利用new操作符在堆区开辟数据2.堆区开辟的数据,由程序员手动开辟,手动释放,释放利用操作符delete3.语法:new 数据类型4.利用new创建的数据,会返回该数据对应的类型的指针#include<iostream>using namespace std;int *func(){ //在堆区创建整型数据 //new 返回的是该数据类型的指针 int *p=new int(10); return p; } void test1() {.原创 2021-02-18 17:34:12 · 121 阅读 · 0 评论 -
set_union函数
1.功能:求两个集合的并集2.函数原型set_union(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); 两个集合必须是有序集合 set_union返回值是并集最后一个元素的位置 beg1,end1,beg2,end2 容器1开始、结束迭代器,容器2开始、结束迭代器 dest 目标容器开始迭代器 #include<iostream>#include<vector..原创 2021-02-18 14:06:19 · 1672 阅读 · 0 评论 -
set_intersection函数
1.set_intersection( iterator beg1,iterator end1, iterator beg2,iterator end2, iterator dest);两个集合必须是有序序列 最特殊的情况,大容器包含小容器,开辟空间取小容器的size即可 函数返回值是交集最后一个元素的位置 beg1,end1,beg2,end2 容器1开始、结束,容器2开始、结束; dest 目标容器开始迭代器 #include<iostream>#include<v.原创 2021-02-18 14:06:06 · 657 阅读 · 0 评论 -
fill函数
1.功能:向容器中填充指定的元素2.函数原型fill(iterator beg,iteerator end, value) beg,end 开始,结束迭代器 value 填充的值 #include<iostream>#include<vector>#include<algorithm>#include<numeric>using namespace std;class myprint{public: void operat..原创 2021-02-06 13:37:50 · 302 阅读 · 0 评论 -
accumulate函数
1.功能:计算指定区间内所有元素之和2.函数原型accumulate(iterator beg, iterator end, value); beg,end 开始,结束迭代器 value 起始值 #include<iostream>#include<vector>#include<algorithm>#include<numeric>using namespace std;void test1(){ vector<i..原创 2021-02-06 13:28:34 · 2221 阅读 · 0 评论 -
swap函数
1.功能:交换两个容器的元素2.函数原型swap( container c1, container c2) c1容器1 c2容器2 #include<iostream>#include<vector>#include<algorithm>#include<ctime>using namespace std;class myprint{public: void operator()(int val) { cout <原创 2021-02-06 13:20:06 · 456 阅读 · 0 评论 -
replace_if函数
1.功能:将容器区间内满足条件的元素替换为指定元素2.函数原型replace_if (iterator beg, iterator end, _pred, newvalue) beg,end 开始,结束迭代器 _pred 谓词 newvalue 替换的新元素 #include<iostream>#include<vector>#include<algorithm>#include<ctime>using namespace std..原创 2021-02-06 13:08:34 · 849 阅读 · 0 评论 -
replace函数
1.功能:将容器指定范围内的旧元素替换为新元素2.函数原型replace(iterator beg, iterator end, oldvalue, newvalue) beg,end 开始和结束迭代器 oldvalue,newvalue 旧元素,新元素 #include<iostream>#include<vector>#include<algorithm>#include<ctime>using namespace std;c.原创 2021-02-06 12:47:59 · 2682 阅读 · 0 评论 -
copy函数
1.功能:将某容器中的指定元素拷贝到另一个容器中2.函数原型copy(iterator beg, iterator end, iterator dest) beg 开始迭代器 end 结束迭代器 dest 目标起始迭代器 #include<iostream>#include<vector>#include<algorithm>#include<ctime>using namespace std;void myprint(int..原创 2021-02-06 12:35:37 · 4309 阅读 · 0 评论 -
reverse函数
1.功能:将容器内元素反转2.函数原型reverse( iterator beg, iterator end); beg 开始迭代器 end 结束迭代器 #include<iostream>#include<vector>#include<algorithm>#include<ctime>using namespace std;void myprint(int val){ cout << val <<..原创 2021-02-06 12:26:44 · 868 阅读 · 0 评论 -
merge函数
1.功能:两个容器元素合并,并存储到另一个容器中2.函数原型merge(iterator beg1, iterator end1, iterator beg2, iterator end2, iterator dest); 前提是两个容器必须有序 beg1 容器1开始迭代器 end1 容器1结束迭代器 beg2 容器2开始迭代器 end2 容器2结束迭代器 dest 目标容器开始迭代器 #include<iostream>#include<vector>..原创 2021-02-06 12:18:50 · 6033 阅读 · 0 评论 -
random_shuffle
1.功能:将指定范围内的元素随机调整次序2.函数原型random_shuffle ( iterator beg, iterator end); beg 开始迭代器 end 结束迭代器 #include<iostream>#include<vector>#include<algorithm>#include<ctime>using namespace std;void myprint(int val){ cout <<.原创 2021-02-06 12:05:01 · 167 阅读 · 0 评论 -
sort函数
1.函数原型sort(iterator beg, iterator end, _pred) 按值查找元素,找到返回指定位置迭代器,找不到返回结束迭代器位置 beg 开始迭代器 end 结束迭代器 _pred 谓词 #include<iostream>#include<vector>#include<algorithm>using namespace std;void myprint(int val){ cout << val...原创 2021-02-06 11:55:41 · 179 阅读 · 0 评论 -
count_if
1.功能:按条件统计元素个数2.函数原型count_if( iterator beg, iterator end , _pred) beg 开始迭代器 end 结束迭代器 _pred 谓词 #include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;//统计内置数据类型class Greater6{p...原创 2021-02-05 18:39:47 · 77 阅读 · 0 评论 -
count函数
1.功能:统计元素个数2.函数原型count(iterator beg, iterator end, value); beg 开始迭代器 end 结束迭代器 value 统计的元素 #include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;//统计内置数据类型void test1(){ vector&l..原创 2021-02-05 18:23:11 · 272 阅读 · 0 评论 -
binary_search函数
1.功能:查找指定元素是否存在2.函数原型:bool binary_search(iterator beg, iterator end, value); 查找指定的元素,找到返回true,否则返回false 注意:不适用于无序序列 beg 开始迭代器 end 结束迭代器 value 查找的元素 #include<iostream>#include<vector>#include<string>#include<algorithm&g...原创 2021-02-05 18:04:59 · 754 阅读 · 0 评论 -
adjacent_find
1.功能:查找相邻重复元素2.函数原型adjacent_find(iterator beg, iterator end) 查找相邻重复元素,返回相邻元素的第一个位置的迭代器 beg: 开始迭代器 end: 结束迭代器 #include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;void test1(){ ve原创 2021-02-05 17:46:40 · 107 阅读 · 0 评论 -
find_if函数
1.功能:按条件查找元素2.函数原型find_if( iterator beg, iterator end, _pred) 按值查找元素,找到的话返回指定位置的迭代器,找不到则返回结束迭代器位置 beg :开始迭代器 end :结束迭代器 _pred :函数或者谓词 (返回bool类型的仿函数) #include<iostream>#include<vector>#include<string>#include<algorithm>原创 2021-02-05 17:37:00 · 8578 阅读 · 2 评论 -
find函数
1.功能:查找指定元素,找到返回指定元素的迭代器,找不到返回结束迭代器end();2.函数原型:find(iterator beg, iterator end , value) beg 开始迭代器 end 结束迭代器 value 查找的元素 #include<iostream>#include<vector>#include<string>#include<algorithm>using namespace std;voi...原创 2021-02-05 13:30:14 · 817 阅读 · 0 评论 -
transform
1.transform //搬运容器到另一个容器中2.函数原型transform(iterator beg1, iterator end1, iterator beg2, _func) beg1: 原容器开始迭代器 end1:原容器结束迭代器 _func: 函数或者函数对象 #include<iostream>#include<vector>#include<algorithm>using namespace std;class Trans..原创 2021-02-05 12:58:57 · 103 阅读 · 0 评论 -
for_each
for_each //遍历容器函数原型:for_each(iterator begin, iterator end, _func) begin 开始迭代器 end 结束迭代器 _func函数或者函数对象 #include<iostream>#include<vector>#include<algorithm>using namespace std;void print1(int val){ cout << val <<原创 2021-02-05 12:39:30 · 65 阅读 · 0 评论 -
map排序之降序
1.目的:map容器默认按照key从小到大排列,学习如何改变排序规则2.解决方案:利用仿函数可以改变排序规则#include<iostream>#include<map>using namespace std;class mycompare{public: bool operator()(int a, int b) const { return a > b; }};void printmap(map<int, int,mycompar原创 2021-02-04 18:39:19 · 1452 阅读 · 3 评论 -
map查找和统计
1.功能:对map容器进行数据查找和统计2.函数原型find(key); //查找key是否存在;若存在返回该键元素的迭代器;若不存在,返回set.end(); count(key); //统计key元素的个数 #include<iostream>#include<map>using namespace std;void printmap(map<int, int>& m){ for (map<int, int>::itera原创 2021-02-04 18:30:37 · 2355 阅读 · 0 评论 -
map插入和删除
1.功能:对map容器的数据进行插入和删除操作2.函数原型insert(elem); //在容器中插入元素 clear(); //清除所有元素 erase(pos); //删除pos迭代器所指的元素,返回下一个元素的迭代器 erase(begin,end); //删除区间 [ begin, end) 的所有元素,返回下一个元素的迭代器 erase(key); //删除容器中值为key的元素 #include<iostream>#include<map>usi.原创 2021-02-04 18:17:02 · 912 阅读 · 0 评论 -
map大小和交换
1.功能:统计map容器大小以及交换map容器2.函数原型size(); //返回容器中元素的数目 empty(); //判断容器是否为空 swap(st); //交换两个集合容器 #include<iostream>#include<map>using namespace std;void printmap(map<int, int>& m){ for (map<int, int>::iterator it = m.beg原创 2021-02-04 17:47:19 · 458 阅读 · 0 评论 -
map/multimap容器
1.简介map中所有元素都是pair pair中第一个元素为key(键值),起到索引作用,第二个元素为value值(实值) 所有元素都会根据元素的键值自动排序2.本质:map/multimap属于关联式容器,底层结构是二叉树实现3.优点:可以根据key值快速找到value值4.map/multimap的区别map不允许容器中有重复key值元素 multimap允许容器中有重复key值元素5.map构造和赋值构造:(1)map<T1 , T2> mp; //...原创 2021-02-04 17:17:18 · 67 阅读 · 0 评论 -
set容器排序B
1.set存放自定义数据类型,set必须指定排序规则才可以插入数据#include<iostream>#include<set>using namespace std;class person{public: person(string name,int age) { this->myname = name; this->myage = age; } string myname; int myage;};class compare原创 2021-02-03 18:52:21 · 124 阅读 · 0 评论 -
set容器排序A
1.set容器默认从小到大,如何改变默认的排序方式2.利用仿函数可以改变排序规则#include<iostream>#include<set>using namespace std;class mycompare{public: bool operator()(int a, int b) const { return a > b; }};void test1(){ //第一种方式 set<int> s; s.inser原创 2021-02-03 17:59:59 · 177 阅读 · 0 评论 -
pair对组的创建
1.功能:利用对组可以返回两个数据,数据是成对出现的2.创建方式:pair<type , type> p (value1 , value2); pair<type , type> p = make_pair(value1 , value2); #include<iostream>#include<string>using namespace std;void test1(){ //第一种方式 pair<string, int&原创 2021-02-03 17:01:36 · 202 阅读 · 0 评论 -
set查找和统计
1.功能:对set容器进行数据查找和统计2.函数原型:find(key); //查找key是否存在;若存在,返回该键元素的迭代器(可以理解为返回该元素的下标);若不存在,返回set.end(); count(key): //统计元素key的个数 #include<iostream>#include<set>using namespace std;void printset(set<int>& s){ for (set<int>原创 2021-02-03 16:18:36 · 1479 阅读 · 0 评论 -
set插入和删除
1.对set容器进行数据的插入和删除2.函数原型insert(elem); //在容器中插入数据 clear(); //清空容器中的数据 erase(pos); //擦除pos迭代器所指向的元素 erase(begin ,end); //擦除区间 [ begin, end) 区间内的元素 erase(elem);//删除容器中所有值为elem的元素 #include<iostream>#include<set>using namespace std;voi原创 2021-02-03 14:02:50 · 725 阅读 · 0 评论 -
set大小和交换
1.功能:计算set容器的大小和交换set容器2.函数原型size(); //返回容器中元素的数目 empty(); //判断容器是否为空 swap(st); //交换两个集合容器 #include<iostream>#include<set>using namespace std;void printset(set<int>& s){ for (set<int>::iterator it = s.begin(); it .原创 2021-02-03 13:38:20 · 285 阅读 · 0 评论 -
set/multiset容器
set基本概念简介:所有元素都会在插入时自动被排序 本质:set/multiset属于关联式容器,底层结构是二叉树实现的 set/multiset区别:(1)set不允许容器中有重复的元素(2)multiset容器中允许有重复的元素set构造和赋值创建set容器以及赋值 构造:(1)set<T> st; (2)set(const set &st); 赋值:set &operator = (const set &st); #include<iostr原创 2021-02-03 13:18:58 · 63 阅读 · 0 评论 -
list容器排序实例
#include<iostream>#include<list>#include<algorithm>using namespace std;class person{public: person(string name,int age, int height) { this->myname = name; this->myage = age; this->myheight = height; } string myn.原创 2021-02-02 17:42:44 · 144 阅读 · 0 评论 -
list的接合操作
1.功能:将一个列表容器的一部分连续的元素从该列表中删除后插入到另一个列表容器2.函数原型:s1.splice(pos, s2); //将s2列表的所有元素插入到s1列表中pos-1和p之间,将s2列表清空。 s1.splice(pos, s2, q1); //将s2列表中q1所指向的元素插入到s1列表中pos-1和p之间,将q1所指向的元素从s2列表删除。 s1.splice(pos,s2, q1, q2); //将s2列表中[ q1, q2) 区间内的所有元素插入到s1列表中pos-1和p.原创 2021-02-02 17:07:53 · 156 阅读 · 0 评论 -
list反转和排序
功能:将容器中的元素反转和对其中的数据进行排序 函数原型reverse(); // 反转链表 sort(); // 链表排序原创 2021-02-02 12:25:03 · 1153 阅读 · 0 评论 -
list数据存取
1.功能:对list容器的数据进行存取,不可以通过 [ ] 或者 at 方式访问数据2.函数原型:front(); //返回第一个元素 back(); //返回最后一个元素 #include<iostream>#include<list>using namespace std;void printlist(const list<int> &L){ for(list<int>::const_iterator it=L.begin原创 2021-02-01 13:58:04 · 491 阅读 · 0 评论 -
list插入和删除
功能:对list容器进行数据的插入和删除 函数原型:push_back(elem); //在容器尾部加入一个元素 pop_back(); //删除容器中最后一个元素 push_front(elem); //在容器开头插入一个元素 pop_front(); //删除容器第一个数据 insert(pos, elem); //在pos位置插入elem元素的拷贝,返回数据的位置 insert(pos, n, elem); //在pos位置插入n个elem数据,无返回值 insert(pos, b..原创 2021-02-01 13:46:05 · 394 阅读 · 0 评论