STL学习
本专栏为STL视频学习笔记,视频为B站:C++ Primer高级(STL及算法),但实际该视频是基于《The C++ Standard Library A Tutorial and Reference》进行讲解,
weixin_45906246
这个作者很懒,什么都没留下…
展开
-
STL算法-17堆(排序)算法
堆(排序)算法make_heap():建堆push_heap():插入堆元素pop_heap():删除堆元素sort_heap():堆排序重排成普通排序#include <iostream>#include <vector>#include <algorithm>using namespace std;int main(){ vector<int> ivec; for (int i = 3; i <= 7; ++i)原创 2020-12-22 14:39:31 · 129 阅读 · 0 评论 -
STL算法-16根据第n个元素排序
根据第n个元素排序nth_element(b, n, e)nth_element(b, n, e, p)对比partition()算法容器元素排序后,使第n个位置上元素就绪#include <iostream>#include <deque>#include <algorithm>#include <functional>#include <iterator>using namespace std;int main()原创 2020-12-22 08:33:13 · 92 阅读 · 0 评论 -
STL算法-15局部排序
局部排序partial_sort(b, se, e)partial_sort(b, se, e, p)partial_sort_copy(sb, se, db, de)源区间[sb, se),目标区间[db, de)返回值:复制后的元素的下一个位置partial_sort_copy(sb, se, db, de, p)默认从小到大升序排序。partial_sort()代码示例#include <iostream>#include <deque>#inc原创 2020-12-21 22:48:27 · 151 阅读 · 0 评论 -
STL算法-14对所有元素排序
对所有元素排序sort(b, e):默认从小到大排序sort(b, e, p)stable_sort(b, e)stable_sort(b, e, p)注意:不适用于list,因为list不可使用随机存取迭代器,排序算法要求使用随机存取迭代器,list有成员函数sort().sort()代码示例#include <iostream>#include <deque>#include <algorithm>#include <functional原创 2020-12-21 19:58:13 · 62 阅读 · 0 评论 -
STL算法-13重排和分区
重排和分区random_shuffle():随机重排partition():数据分区,符合规则的数据前移。返回迭代器,指向分区后中间的位置。谓词决定分区规则。分区不稳定。stable_partition():#include <iostream>#include <vector>#include <list>#include <set>#include <algorithm>#include <functi原创 2020-12-21 08:12:06 · 97 阅读 · 0 评论 -
STL算法-12排列组合
排列组合排列组合前的数据必须先排序。next_permutation():原始数据为升序,从小到大排列prev_permutation():原始数据为降序,从大到小排列函数返回值为false:所有排列组合都已经排完#include <iostream>#include <vector>#include <algorithm>using namespace std;int main(){ vector<int> ivec; ive原创 2020-12-20 23:22:33 · 268 阅读 · 0 评论 -
STL算法-11逆转和旋转
逆转和旋转reverse()reverse_copy()rotate()retate_copy()#include <iostream>#include <vector>#include <list>#include <algorithm>#include <functional>#include <iterator>using namespace std;int main(){ vector<原创 2020-12-20 20:56:42 · 136 阅读 · 0 评论 -
STL算法-10删除性算法
删除性算法remove()remove_if()remove_copy()remove_copy_if()unique()unique_copy()并不是真正的删除,而是把后面的元素前移,覆盖被删除元素(逻辑删除),真正删除需要用erase():将算法与容器分离返回新的逻辑终点remove()和remove_if()#include <iostream>#include <vector>#include <list>#include <原创 2020-12-20 15:48:51 · 146 阅读 · 0 评论 -
STL算法-09替换算法
替换算法replace(b, e, ov, nv)replace_if(b, e, p, v)replace_copy(b1, e1, b2, ov, nv)replace_copy_if(b1, e1, b2, p, v)#include <iostream>#include <list>#include <algorithm>#include <functional>#include <iterator>using n原创 2020-12-20 15:09:13 · 75 阅读 · 0 评论 -
STL算法-08填充新值
填充新值fill(b, e, v):用固定常量v填充迭代器[b, e)区间元素。fill_n(b, n, v):可以指定填充个数n,若为空,则必须使用插入迭代器generate(b, e, p)generate_n(b, n, p)#include <iostream>#include <list>#include <string>#include <algorithm>#include <iterator>using n原创 2020-12-18 09:53:16 · 90 阅读 · 0 评论 -
STL算法-07交换算法
交换算法swap_ranges(b, e, b2):其他交换算法:容器的swap()成员函数赋值操作#include <iostream>#include <vector>#include <deque>#include <algorithm>using namespace std;int main(){ vector<int> ivec1; vector<int> ivec2; ivec1.原创 2020-12-17 21:57:23 · 88 阅读 · 0 评论 -
STL算法-06复制元素
复制元素copy():将数据从一个容器拷贝到另一个容器,或将数据从容器的一个区间拷贝到另一个区间。copy_backward()拷贝时必须保证有足够的空间。没有copy_if()算法,可以使用remove_ copy_if()算法复制过程中要逆转元素次序,使用reverse_copy()算法把容器内所有元素赋值给另一个容器,要使用赋值操作符或容器的assign()成员函数复制过程中别除某些元素,使用remove_copy()和remove_copy_if()算法复制过程中修改元素,使用tr原创 2020-12-17 09:02:52 · 138 阅读 · 0 评论 -
STL算法-05区间的比较
区间的比较equal(b, e, b2):第一个容器迭代器[b, e)和第二个容器b2起始的迭代器指向的数据进行比较是否相等。equal(b, e, b2, p):mismatch(b, e, b2):查找两个容器中第一个不相等的数据。mismatch(b, e, b2, p)lexicographical_compare(b, e, b2, e2):比较第一个迭代器区间[b, e)是否比第二个[b2, e2)小lexicographical_compare(b, e, b2, e2, p)原创 2020-12-16 19:25:07 · 232 阅读 · 0 评论 -
STL算法-04for_each和transform
STL算法-for_each()for_each(b, e, p)使用for_each()算法遍历数据使用for_each()和函数对象修改数据使用for_each()的返回值#include <iostream>#include <vector>#include <algorithm>using namespace std;void print(int elem){ cout << elem << ' ';}t原创 2020-12-15 10:13:26 · 199 阅读 · 0 评论 -
STL算法-03查找算法
常用查找算法find()find_if()search_n()search()find_end()first_first_of()adjacent_find()find()和find_if()find()和find_if()是线性查找,查找速度较慢。查找的结果是迭代器。如果是已序区间,可以使用已序区间查找算法:binary_search()includes()lower_bound()upper_bound()关联式容器有等效的成员函数find(),时间复杂度为对数原创 2020-12-15 10:12:06 · 184 阅读 · 0 评论 -
STL算法-02最小值和最大值
最小值和最大值min_element(b, e):返回一个迭代器min_element(b, e, op):max_element(b, e):max_element(b, e, op):第三个参数op可写可不写,max_element()和min_element()默认是从小到大排列,然后max_element()输出最后一个值,min_element()输出第一个值,但是如果自定义的op函数写的是从大到小排列,那么会导致max_element()和min_element()的两个结果是对调的原创 2020-12-15 10:07:37 · 260 阅读 · 0 评论 -
STL算法-01元素计数
01-元素计数countcount_if:有_if则允许传递一个函数或一个函数对象作为谓词count和count_if是所有容器都可以使用的通用算法,线性查找,相较于成员函数,速度较慢。关联容器的等效成员函数set.count:比count更快,因为set已排序。multiset.countmap.countmultimap.count代码示例#include <iostream>#include <algorithm>#include <ve原创 2020-12-15 09:36:09 · 167 阅读 · 0 评论