C++?list容器merge算法的使用以及注意事項(xiàng)
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)算符
- 如果通過(guò)pred修改為使用>運(yùn)算符時(shí)
- 相應(yīng)的兩個(gè)list容器中的元素也應(yīng)該是按照從大到小的順序排列
- 否則會(huì)觸發(fā)錯(cuò)誤
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
C++中標(biāo)準(zhǔn)線程庫(kù)的基本使用介紹
大家好,本篇文章主要講的是C++中標(biāo)準(zhǔn)線程庫(kù)的基本使用介紹,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下2022-02-02
Qt中圖片旋轉(zhuǎn)縮放操作的實(shí)現(xiàn)
本文主要介紹了Qt中圖片旋轉(zhuǎn)縮放操作的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-01-01
C++ 項(xiàng)目引入lib和dll的區(qū)別與使用實(shí)戰(zhàn)
靜態(tài)鏈接庫(kù)與動(dòng)態(tài)鏈接庫(kù)都是共享代碼的方式,本文主要介紹了C++項(xiàng)目引入lib和dll的區(qū)別與使用實(shí)戰(zhàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
c++實(shí)現(xiàn)圖像像素計(jì)算的示例詳解
我們知道每張圖像都能夠用矩陣來(lái)表示,矩陣中每個(gè)元素的值表示了圖像中每個(gè)像素值,像素值的大小就對(duì)應(yīng)著圖像的亮暗,本文主要來(lái)和大家介紹一下C++進(jìn)行圖像像素計(jì)算的相關(guān)知識(shí),感興趣的可以了解下2023-12-12

