码迷,mamicode.com
首页 > 编程语言 > 详细

发现一个c++ vector sort的bug

时间:2016-05-13 07:49:10      阅读:190      评论:0      收藏:0      [点我收藏+]

标签:

在开发中遇到一个非常诡异的问题:我用vector存储了一组数据,然后调用sort方法,利用自定义的排序函数进行排序,但是一直都会段错误,在排序函数中打印参加排序的值,发现有空值,而且每次都跟同一个数据排序,非常诡异。数据本身没有问题,换一组数据,甚至是在不能排序的那组数据中增删一些数据,sort又正常了。。。

我把出现这种现象的数据贴出来,大神们感兴趣可以分析一下,究竟是为什么:

2016-05-10 00:28:00.0|2016-05-10 01:00:00.0|02000006000000071605091559004526|NAME|02000000000000050000000000000055|NAME
2016-05-10 00:27:00.0|2016-05-10 00:54:00.0|02000000000000071605071617500023|NAME|02000000000000050000000000000110|NAME
2016-05-10 00:27:00.0|2016-05-10 00:30:00.0|02000000000000071605091739500000|NAME|02000000000000050000000000000057|NAME
2016-05-10 00:28:00.0|2016-05-10 00:42:00.0|02000000000000071605091719500002|NAME|02000000000000050000000000000095|NAME
2016-05-10 00:27:00.0|2016-05-10 01:09:00.0|02000000000000071605070313500002|NAME|02000000000000050000000000000097|NAME
2016-05-10 00:29:00.0|2016-05-10 01:13:00.0|02000006000000071605091559003907|NAME|02000000000000050000000000000069|NAME
2016-05-10 00:26:00.0|2016-05-10 00:51:00.0|02000000000000071605070233500008|NAME|02000000000000050000000000000085|NAME
2016-05-10 00:25:00.0|2016-05-10 01:50:00.0|02000000000000071605071615500023|NAME|02000000000000050000000000000103|NAME
2016-05-10 00:24:00.0|2016-05-10 01:17:00.0|02000000000000071605070150500005|NAME|02000000000000050000000000000087|NAME
2016-05-10 00:28:00.0|2016-05-10 01:00:00.0|02000000000000071605081217500028|NAME|02000000000000050000000000000152|NAME
2016-05-10 00:25:00.0|2016-05-10 01:19:00.0|02000006000000071605091600000048|NAME|02000004000000052015081800000002|NAME
2016-05-10 00:28:00.0|2016-05-10 01:00:00.0|02000006000000071605091137006302|NAME|02000004000000052014070200000009|NAME
2016-05-10 00:24:00.0|2016-05-10 01:13:00.0|02000006000000071605091559009874|NAME|02000004000000052015051500000004|NAME
2016-05-10 00:29:00.0|2016-05-10 01:13:00.0|02000006000000071605091559003493|NAME|02000004000000052016021800000003|NAME
2016-05-10 00:28:00.0|2016-05-10 01:00:00.0|02000006000000071605091559004316|NAME|02000006000000052015012300000005|NAME
2016-05-10 00:28:00.0|2016-05-10 00:42:00.0|02000000000000071605091717500001|NAME|02000000000000050000000000000470|NAME
2016-05-10 00:25:00.0|2016-05-10 01:19:00.0|02000006000000071605091600000169|NAME|02000001000000050000000000000008|NAME
2016-05-10 00:25:00.0|2016-05-10 00:30:00.0|02000006000000071605091559006266|NAME|02000001000000052014112600000001|NAME
2016-05-10 00:25:00.0|2016-05-10 01:19:00.0|02000006000000071605091137010811|NAME|02000004000000052014070300000001|NAME
2016-05-10 00:25:00.0|2016-05-10 01:15:00.0|02000006000000071605091600001812|NAME|02000001000000050000000000000009|NAME
2016-05-10 00:26:00.0|2016-05-10 00:38:00.0|02000006000000071605091137009746|NAME|02000001000000050000000000000388|NAME
2016-05-10 00:27:00.0|2016-05-10 01:07:00.0|02000006000000071605091559009598|NAME|02000004000000052015051500000015|NAME
2016-05-10 00:29:00.0|2016-05-10 01:13:00.0|02000006000000071605091559003286|NAME|02000004000000052016021800000004|NAME
2016-05-10 00:25:00.0|2016-05-10 01:19:00.0|02000006000000071605091137010690|NAME|02000001000000050000000000000375|NAME
2016-05-10 00:29:00.0|2016-05-10 00:36:00.0|02000006000000071605091137012374|NAME|02000001000000050000000000000384|NAME
2016-05-10 00:27:00.0|2016-05-10 00:30:00.0|02000000000000071605091719500015|NAME|02000000000000050000000000000473|NAME
2016-05-10 00:29:00.0|2016-05-10 01:13:00.0|02000006000000071605091559003700|NAME|02000004000000052016022200000002|NAME

排序的结果应该如下,但是sort不出来:

2016-05-10 00:24:00.0, 2016-05-10 01:13:00.0, 02000006000000071605091559009874, 02000004000000052015051500000004
2016-05-10 00:24:00.0, 2016-05-10 01:17:00.0, 02000000000000071605070150500005, 02000000000000050000000000000087
2016-05-10 00:25:00.0, 2016-05-10 00:30:00.0, 02000006000000071605091559006266, 02000001000000052014112600000001
2016-05-10 00:25:00.0, 2016-05-10 01:15:00.0, 02000006000000071605091600001812, 02000001000000050000000000000009
2016-05-10 00:25:00.0, 2016-05-10 01:19:00.0, 02000006000000071605091600000048, 02000004000000052015081800000002
2016-05-10 00:25:00.0, 2016-05-10 01:19:00.0, 02000006000000071605091600000169, 02000001000000050000000000000008
2016-05-10 00:25:00.0, 2016-05-10 01:19:00.0, 02000006000000071605091137010811, 02000004000000052014070300000001
2016-05-10 00:25:00.0, 2016-05-10 01:19:00.0, 02000006000000071605091137010690, 02000001000000050000000000000375
2016-05-10 00:25:00.0, 2016-05-10 01:50:00.0, 02000000000000071605071615500023, 02000000000000050000000000000103
2016-05-10 00:26:00.0, 2016-05-10 00:38:00.0, 02000006000000071605091137009746, 02000001000000050000000000000388
2016-05-10 00:26:00.0, 2016-05-10 00:51:00.0, 02000000000000071605070233500008, 02000000000000050000000000000085
2016-05-10 00:27:00.0, 2016-05-10 00:30:00.0, 02000000000000071605091739500000, 02000000000000050000000000000057
2016-05-10 00:27:00.0, 2016-05-10 00:54:00.0, 02000000000000071605071617500023, 02000000000000050000000000000110
2016-05-10 00:27:00.0, 2016-05-10 01:07:00.0, 02000006000000071605091559009598, 02000004000000052015051500000015
2016-05-10 00:27:00.0, 2016-05-10 01:09:00.0, 02000000000000071605070313500002, 02000000000000050000000000000097
2016-05-10 00:28:00.0, 2016-05-10 00:42:00.0, 02000000000000071605091719500002, 02000000000000050000000000000095
2016-05-10 00:28:00.0, 2016-05-10 00:42:00.0, 02000000000000071605091717500001, 02000000000000050000000000000470
2016-05-10 00:28:00.0, 2016-05-10 01:00:00.0, 02000006000000071605091559004526, 02000000000000050000000000000055
2016-05-10 00:28:00.0, 2016-05-10 01:00:00.0, 02000000000000071605081217500028, 02000000000000050000000000000152
2016-05-10 00:28:00.0, 2016-05-10 01:00:00.0, 02000006000000071605091137006302, 02000004000000052014070200000009
2016-05-10 00:28:00.0, 2016-05-10 01:00:00.0, 02000006000000071605091559004316, 02000006000000052015012300000005
2016-05-10 00:29:00.0, 2016-05-10 00:36:00.0, 02000006000000071605091137012374, 02000001000000050000000000000384
2016-05-10 00:29:00.0, 2016-05-10 01:13:00.0, 02000006000000071605091559003907, 02000000000000050000000000000069
2016-05-10 00:29:00.0, 2016-05-10 01:13:00.0, 02000006000000071605091559003493, 02000004000000052016021800000003
2016-05-10 00:29:00.0, 2016-05-10 01:13:00.0, 02000006000000071605091559003286, 02000004000000052016021800000004
2016-05-10 00:29:00.0, 2016-05-10 01:13:00.0, 02000006000000071605091559003700, 02000004000000052016022200000002

现在只好自己写了一个排序的方法来手动排序,还好每组数据的数据量不大,对效率的要求并不是很高。

发现一个c++ vector sort的bug

标签:

原文地址:http://www.cnblogs.com/xyliao/p/5484717.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!