c++list容器中的反转和排序
函数原型:
reverse(); //反转链表
sort(); //链表排序
reverse,直接反转链表中的顺序,猜测就是直接将链表中的begin和end换了,毕竟本身就是双向循环列表,连指针都不用重连
sort,对链表进行排序,默认是从小到大,注意,这个sort不能使用标准算法中的sort,也就是sort(begin,end)的那种,因为这种sort是需要容器中的迭代器能够随机访问,所以在list中能使用了sort是他自己的内置函数,l1.sort()这种。实际上,其他迭代器不能随机访问的容器,一般也都是会提供一个默认的sort
这个内置的sort可以通过提供一个函数,或者仿函数,改变他的排序规则。函数中bool作为返回,返回判断大小的正误。仿函数传入的是容器中的两个数据,内部是排序规则,最后输出的是bool值
具体的实现非常的麻烦,以后再看
bool mycompare(int v1,int v2)
{
return v1>v2;
}
l1.sort(mycompare);
bool mycompare(people v1,people v2)
{
if(v1.mage != v2.mage)
{
return v1.mage < v2.mage;//升序排列
}else
{
return v1.mhight > v2.mhight;//降序排列
}
}
printlist(L);
L.sort(mycompare);//注意这里传输的是函数名,没有()
printlist(L);
30 160 b
30 180 c
30 140 d
30 110 e
80 120 f
40 170 g
70 130 h
10 150 a
30 180 c
30 160 b
30 140 d
30 110 e
40 170 g
70 130 h
80 120 f

浙公网安备 33010602011771号