
为了面试苦学c++ orz… 记录下STL中的algorithm模块
- Iterator
- algorithm
- container
核心思想: 数据结构与算法分离,为各种数据结构提供统一的算法。
一些函数
algorithm函数列表
all_of/count_if
1 2 3 4 5 6 7 8
|
int () { std::vector<int> s = {1, 2, 3, 5}; std::cout << std::all_of(s.begin(), s.end(), [](int x) { return x > 0;}) << "n"; std::cout << std::count_if(s.begin(), s.end(), [](int x) { return x > 1;}); }
|
copy
copy(iterator s_begin, iterator s_end, iterator t_begin)
1 2 3 4 5 6
|
int () { std::vector<int> s = {1, 2, 3, 5}; std::vector<int> s2; std::copy(s.begin(), s.end(), std::back_inserter(s2)); }
|
- for_each
- transform(iterator t_begin, iterator t_end, iterator s_begin, function)
1 2 3 4 5 6 7 8
|
int () { std::vector<int> s = {1, 2, 3, 5}; std::for_each(s.begin(), s.end(), [](int &x) { x = x * x;}); std::transform(s.begin(), s.end(), s.begin(), [](int x) -> int {return x + 1;}); }
|
iter_swap
iter_swap(iterator, iterator)
sort
sort(iterator, iteratot, function)
1 2 3 4 5 6 7 8 9 10 11 12
|
struct Interval { int start; int end; Interval(int a, int b):start(a), end(b){} } int (){ sort(intervals.begin(), intervals.end(), [](const Interval& x, const Interval& y){ return x.end < y.end; }); }
|
近期评论