stl里list的sort()用法
最近要做个按时间排序的东西,首先就想到了list里的sort函数。能用内置函数的尽量用内置函数,安全可靠。在用的过程中出现了几个问题,在这里总结一下。直接贴代码了,这我自己写的一个测试程序。vs2008里编译通过,这里要排序自己的类型,就写个小于号的重载。出现了这几个问题:
1.GetObj()那个函数开始没有申明定义为const结果在重载小于号函数里总是报错,错误大概说不能将非const的指针转为const指针。后面在好友的提醒下恍然大悟。我传递的是一个const引用,当然只能调用const的函数了。看来前面对const的总结还是不够。
2.第2个问题就是我编译运行后发现结果不对,有兴趣的同学可以看看。为什么不对呢,就是list<Obj*> lstObj这个不对。我想这是由于list内部的list不是申明为指针的,后来改list<obj>就对了。
下面是第一版的代码,排序是不对的。
再看第2版经过改进的。
这下结果就对了,以后在用到其他stl函数的时候可以参考一下,别再走弯路。