文档详情

C++ list容器merge算法的使用以及注意事项.docx

发布:2025-05-26约1.17千字共2页下载文档
文本预览下载声明

C++?list容器merge算法的使用以及注意事项

目录list容器merge算法的使用注意事项(1)voidmerge(listx)(2)voidmerge(lst2,comp)总结

list容器merge算法的使用注意事项

C++的list容器merge算法有多种形式,这里仅讨论一下两种:

(1)voidmerge(listx)

该算法将一个有序list容器加入另一个有序list容器中,且两个list容器必须都为逆序或顺序,这是很容易不注意导致报错的主要原因。

listlst1{111,222,333,444};//顺序

listlst2{2411,4,3,2,1};//逆序

lst1.merge(lst2);

for(autobeg=lst1.begin();beg!=lst1.end();++beg)

cout*beg;

coutendl;

(2)voidmerge(lst2,comp)

该算法可以自定义比较类型,需要一个能返回bool型的predict。

boolmycomparison(doublefirst,doublesecond)

{return(int(first)int(second));}

intmain()

std::listfirst,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“firstcontains:”;

for(std::list::iteratorit=first.begin();it!=first.end();++it)

std::cout*it;

std::cout‘\n;

return0;

}

需要注意的是:

merge默认是使用运算符如果通过pred修改为使用运算符时相应的两个list容器中的元素也应该是按照从大到小的顺序排列否则会触发错误

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。

显示全部
相似文档