簡體   English   中英

合並 C++ 中的列表

[英]merging a list in C++

我是 STL 概念的新手,我在列表合並代碼中遇到了一個問題。

list<int> lst1; 
list<int> lst2;
lst1.push_back(5);
lst1.push_back(7);
lst1.push_back(1);
lst1.push_back(9);
lst1.push_back(12);

lst2.push_back(45);
lst2.push_back(6);
lst2.push_back(9);

output 的代碼:

lst1.merge(lst2) 

是 5 7 1 9 12 45 6 9

但是當我們分別對這兩個列表進行排序時,我們得到

lst1.sort()
lst2.sort()
lst1.merge(lst2)

整個列表排序為 output 是 1 5 6 7 9 9 12 45

為什么 output 不是 1 3 7 9 12 6 9 45?

我們正在單獨對列表進行排序 為什么最終列表會被排序?

這就是為什么在猜測它的作用之前,您至少需要閱讀函數文檔摘要 從字面上看,第一行:

將兩個排序列表合並為一個。 列表應按升序排列。

function 的重點是將兩個排序的輸入合並為一個排序的結果。 如果您違反要求,就會發生奇怪的事情(很可能它假設輸入已排序並以優先考慮局部最小值的方式將它們混在一起,產生未排序的 output,但不只是背靠背節點)。

如果您只想從另一個list的末尾拼接節點,這就是splice的用途

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM