陆陆续续翻了三百多页c++primer,发现不练习不做笔记收效甚微。从今天开始尽量每日进行记录。
18.5.8
p343 10.2.3
sort()具有三个参数,其中前两个为排序起点终点的迭代器(泛指针),第三个参数可选,要求一个(比较)函数指针。可以使用less<typename>()或<functional>中的greater<typename>(),都是bool型函数。可以决定排序顺序。
头文件中代码如下
template<class _Ty = void>
struct greater : public binary_function<_Ty, _Ty, bool> { // functor for operator> bool operator()(const _Ty& _Left, const _Ty& _Right) const { // apply operator> to operands return (_Left > _Right); }//使用了大于号 };
若不给模板中的类,则不进行比较
int array1[3] = { 2, 1, 3 };
sort(array1, array1 + 2,greater<>());
cout << array1[0] << " " << array1[1] << " " << array1[2] << endl;
结果是2 1 3;
sort可以用来比较各种定义了比较操作符的类。
2.unique()可以消除相邻重复项。和之前的sort一样有两个参数接受两个迭代器确定范围,可利用第三个参数接受类似back_inserter(vec)的函数实现将unique序列复制。
需要注意的是,unique实现时并没有改变容器大小,只是对容器元素进行再排序,将重复项移到后面。如需完全删除重复项需要再调用erase()函数释放空间。
一般为使用unique()函数前先调用sort()函数。
现在是还有五分钟十二点啦,好怀念下午五点多在床上躺的那十分钟,好舒服。听着窗外的风,心里知道,只要愿意睁眼看,就能见一片蓝天。
再做20个俯卧撑吧。