c++ algorithm 一些函数

为了面试苦学c++ orz… 记录下STL中的algorithm模块

  • Iterator
  • algorithm
  • container

核心思想: 数据结构与算法分离,为各种数据结构提供统一的算法。

一些函数

algorithm函数列表

all_of/count_if

  • 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";
// count_if
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};
// copy
std::vector<int> s2;
std::copy(s.begin(), s.end(), std::back_inserter(s2));
}

for_each/transform

  • 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};
// for_each
std::for_each(s.begin(), s.end(), [](int &x) { x = x * x;});
// transform
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;
});
}