STL 各种容器排序和查找算法对运算符的使用及特别注意运算符重载错误
来源:互联网 发布:陌陌用什么软件定位 编辑:程序博客网 时间:2024/05/19 19:32
STL各种容器和算法的sort和find函数对重载运算符的调用情况:
1) 二叉树类型的容器的sort和find都会调用operator < 。
2)线性类型容器sort会调用operator <;线性容器使用std::find会调用operator ==。
需要非常注意重载<运算符,分类讨论要周全。不然重则会导致dump机问题,轻则会导致排序不对。
例子:
// 游戏中的日常任务简单例子// 其实只要关系到使用STL进行排序的都要非常小心operator <的重载函数。struct tagDailyTask{bool m_bFinish;// 是否完成了任务DWORD m_dwID; // 任务IDtagDailyTask(){m_bFinish = false;m_dwID = 0;}// operator <目标完成的任务排在后面,未完成的任务排在前面按照ID排序// 有问题的写法/*bool operator <(const tagDailyTask &b){if(this->m_bFinish && !b.m_bFinish){return true;}else {if( this->m_dwID < b.m_dwID ){return true;}else{return false;}}}*/// 正确的写法bool operator <(const tagDailyTask &b){if(this->m_bFinish == b.m_bFinish){if( this->m_dwID < b.m_dwID ){return true;}else{return false;}}else {if( this->m_bFinish && !b.m_bFinish){return true;}else{return false;}}}};
0 0
- STL 各种容器排序和查找算法对运算符的使用及特别注意运算符重载错误
- 重载及运算符重载需要注意的地方
- STL 迭代器失效和运算符重载容易错误问题
- 重载一个+运算符、<<运算符和>运算符。实现对分数的运算
- 重载运算符的错误
- C++重载运算符与STL有序容器
- C++STL系列 结构体运算符重载及优先队列的使用
- 使用STL模板必须重载的运算符
- 下标的使用和运算符重载
- 运算符重载和模板的使用
- 重载运算符排序
- 运算符重载 = 的注意
- 运算符重载需要注意的事项
- C++ 运算符重载的注意点
- STL容器map的下标运算符[]
- STL容器vector的下标运算符[]
- STL容器map的下标运算符[]
- STL容器map的下标运算符[]
- 第八周上机项目 阅读程序
- redo 和 undo
- 第7周项目4-string类的构造
- 2014年第九周项目一:复数类中的运算符重载(续)
- 新浪看看
- STL 各种容器排序和查找算法对运算符的使用及特别注意运算符重载错误
- 第九周项目二——Time类中的运算符重载(续)
- ubuntu12+ 非root用户使用串口
- 第十周上机项目1复数类中的运算符重载
- 第八周项目二-Time类中的运算符重载
- jxl导致内存的溢出
- 第九周项目二:Time类中的运算符重载(续)
- 第8周项目1-复数类中的运算符重载(续)
- 第八周 运算符的重载