C++ list容器merge算法的使用以及注意事项
更新时间:2024年04月24日 08:40:41 作者:Never mind
这篇文章主要介绍了C++ list容器merge算法的使用以及注意事项,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
list容器merge算法的使用注意事项
C++的list容器merge算法有多种形式,这里仅讨论一下两种:
(1) void merge(list &x)
该算法将一个有序list容器加入另一个有序list容器中,且两个list容器必须都为逆序或顺序,这是很容易不注意导致报错的主要原因。
list lst1{ 111,222,333,444 };//顺序 list lst2{ 2411,4,3,2,1 };//逆序 lst1.merge(lst2); for (auto beg = lst1.begin(); beg != lst1.end(); ++beg) cout << *beg << " "; cout << endl;
(2) void merge(lst2,comp)
该算法可以自定义比较类型,需要一个能返回bool型的predict。
bool mycomparison (double first, double second) { return ( int(first)<int(second) ); } int main () { std::list first, second; first.push_back (3.1); first.push_back (2.2); first.push_back (2.9); second.push_back (3.7); second.push_back (7.1); second.push_back (1.4); first.sort(); second.sort(); first.merge(second); //使用merge后插入的list都为空 second.push_back (2.1); first.merge(second,mycomparison); std::cout << “first contains:”; for (std::list::iterator it=first.begin(); it!=first.end(); ++it) std::cout << ' ' << *it; std::cout << ‘\n'; return 0; }
需要注意的是:
- merge默认是使用<运算符
- 如果通过pred修改为使用>运算符时
- 相应的两个list容器中的元素也应该是按照从大到小的顺序排列
- 否则会触发错误
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
C++使用OpenCV实现证件照蓝底换成白底功能(或其他颜色如红色)详解
这篇文章主要介绍了C++使用OpenCV实现证件照蓝底换成白底功能(或其他颜色如红色),结合实例形式详细分析了OpenCV颜色转换相关操作原理与实现技巧,需要的朋友可以参考下2019-12-12简要对比C语言中的truncate()函数与ftruncate()函数
这篇文章主要介绍了C语言中的truncate()函数与ftruncate()函数的简要对比,注意其之间的区别,需要的朋友可以参考下2015-09-09
最新评论