cmp函数
cmp 函数的特点:
- 返回值为 bool 类型,用来表示当前的排序是否正确
- 参数为两个相同类型的变量,且类型与要排序的容器模板类型相同
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27// 从小到大排列
bool cmp( const Data& d1, const Data& d2)
{
// return(d1.dist < d2.dist);
// 由于重载了 <= ,可以直接这么写
return(d1 <= d2);
}
vector<Data> vec;
Data temp;
for ( int i = 0; i < 8; ++i )
{
temp.dist = rand() %50;
temp.confidence = 100;
vec.push_back( temp );
}
for(int i=0; i<8; i++)
{
cout << vec.at(i).dist << " ";
}
cout << endl;
// 第三个参数可以是一个函数指针,一般使用cmp函数
stable_sort( vec.begin(), vec.end(), cmp );
for(int i=0; i<8; i++)
{
cout << vec.at(i).dist << " ";
}
std::accumulate 函数
用来计算特定范围内(包括连续的部分和初始值)所有元素的和,除此之外,还可以用指定的二进制操作来计算特定范围内的元素结果,需要 #include <numeric>
。 三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。
1 | vector<int> v; |