c++primer--泛型算法sort unique浅析

陆陆续续翻了三百多页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个俯卧撑吧。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值