C++?list容器merge算法的使用以及注意事項(xiàng)
更新時(shí)間:2024年04月24日 08:40:41 作者:Never?mind
這篇文章主要介紹了C++?list容器merge算法的使用以及注意事項(xiàng),具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
list容器merge算法的使用注意事項(xiàng)
C++的list容器merge算法有多種形式,這里僅討論一下兩種:
(1) void merge(list &x)
該算法將一個(gè)有序list容器加入另一個(gè)有序list容器中,且兩個(gè)list容器必須都為逆序或順序,這是很容易不注意導(dǎo)致報(bào)錯(cuò)的主要原因。
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)
該算法可以自定義比較類型,需要一個(gè)能返回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默認(rèn)是使用<運(yùn)算符
- 如果通過pred修改為使用>運(yùn)算符時(shí)
- 相應(yīng)的兩個(gè)list容器中的元素也應(yīng)該是按照從大到小的順序排列
- 否則會(huì)觸發(fā)錯(cuò)誤
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C語言實(shí)現(xiàn)共享單車管理系統(tǒng)
這篇文章主要為大家詳細(xì)介紹了C語言實(shí)現(xiàn)共享單車管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-08-08探討:C++實(shí)現(xiàn)鏈?zhǔn)蕉鏄?用非遞歸方式先序,中序,后序遍歷二叉樹)
本篇文章是對用C++實(shí)現(xiàn)鏈?zhǔn)蕉鏄?用非遞歸方式先序,中序,后序遍歷二叉樹)的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C語言中棧和隊(duì)列實(shí)現(xiàn)表達(dá)式求值的實(shí)例
這篇文章主要介紹了C語言中棧和隊(duì)列實(shí)現(xiàn)表達(dá)式求值的實(shí)例的相關(guān)資料,這里主要是對數(shù)據(jù)結(jié)構(gòu)中棧和隊(duì)列的理解和應(yīng)用,需要的朋友可以參考下2017-08-08