std::sort函数中的陷阱
来源:互联网 发布:深圳市云和数据 编辑:程序博客网 时间:2024/05/21 14:02
前几天收到游戏中一个很严重的bug,执行某项操作的时候会出现卡死的现象。最后调试的时候定位到std的sort函数,发现一进这个函数就出不来了,很可能在里面出现了死循环。刚开始,我还是很诧异。大名鼎鼎,久经考验的的STL算法也会出现死循环?于是baidu了一下,果然在网上也发现不少人碰到过类似情况。出现死循环大多是由于在sort函数中的比较函数里面相等元素返回了true。
std的sort函数用的是QuickSort算法,采用分段递归排序。很可能是在递归的时候出现问题,导致无限递归循环。后来看到Effecitve STL 中第 21条: 永远让比较函数对相同元素返回false。 不过也有一个更保险的方法就是使用stable_sort函数,这个函数是稳定排序算法,当两个元素相等的时候会保持次序。经验证,不管任何情况,该函数都不会引起死循环。不过该函数比起sort函数来开销会大一点。
0 0
- std::sort函数中的陷阱
- std::sort函数中的陷阱
- std::sort函数中的陷阱
- std::vector中的陷阱
- std::sort 函数
- std::sort函数编译错误
- 关于std::list中的sort()
- 关于std::list中的sort()
- 关于std::sort中的比较函数使用时的严格弱排序(strict weak order)
- std:sort和字符串hash函数
- std::sort使用自定义比较函数
- std::sort
- std::sort()
- std::sort
- std::sort
- LoadRunner函数中的几个陷阱
- c++中的sort 函数
- matlab中的sort函数
- 详解android:scaleType属性
- JavaScript学习总结-技巧、实用函数、简洁方法、编程细节
- FragmentPagerAdapter与FragmentStatePagerAdapter区别
- 标准非STL容器 : bitset
- 黑马程序员——java基础—-面向对象
- std::sort函数中的陷阱
- VS2013MFC单文档工程学习笔记三 - 按钮添加响应事件
- 开源 java CMS - FreeCMS2.3会员注册
- 【Android布局】在程序中设置android:gravity 和 android:layout_Gravity属性
- 软件项目业务外包之路——起点
- js传递二维数组给php
- eclipse 使用技巧
- Android事件机制完全解析
- BS程序如何通过浏览器了解点击响应时间