list::merge (STL/CLR)
合併兩個已排序的受控制序列。
void merge(list<Value>% right);
template<typename Pred2>
void merge(list<Value>% right, Pred2 pred);
參數
pred
項目組的比較子。right
若要在合併的容器。
備註
第一個成員函式所控制的序列中移除所有項目right ,並將它們插入受控制序列中。 這兩個序列必須以先前排序operator< -項目必須不能減少在值中進行的程序透過其中一個序列。 也會依據排序結果序列operator<。 您可以使用這個成員函式來合併成也會增加在 [值的序列值增加的兩個序列。
第二個成員函式行為和第一,一樣不同之處在於根據排列序列pred - pred(X, Y)必須是針對任何項目,則為 false X後面的項目Y的順序。 您可以用它來合併兩個序列的已排序的述詞函式或您指定的委派。
同時函式會執行穩定合併--沒有配對中其中一種原始的受控制序列的項目會顛倒產生受控制序列中。 此外,如果項目的配對X和Y在結果的受控制序列都有相同的順序- !(X < Y) && !(X < Y) -從原始的受控制序列的項目所控制的序列中出現的項目之前, right。
範例
// cliext_list_merge.cpp
// compile with: /clr
#include <cliext/list>
typedef cliext::list<wchar_t> Mylist;
int main()
{
cliext::list<wchar_t> c1;
c1.push_back(L'a');
c1.push_back(L'c');
c1.push_back(L'e');
// display initial contents " a c e"
for each (wchar_t elem in c1)
System::Console::Write(" {0}", elem);
System::Console::WriteLine();
cliext::list<wchar_t> c2;
c2.push_back(L'b');
c2.push_back(L'd');
c2.push_back(L'f');
// display initial contents " b d f"
for each (wchar_t elem in c2)
System::Console::Write(" {0}", elem);
System::Console::WriteLine();
// merge and display
cliext::list<wchar_t> c3(c1);
c3.merge(c2);
for each (wchar_t elem in c3)
System::Console::Write(" {0}", elem);
System::Console::WriteLine();
System::Console::WriteLine("c2.size() = {0}", c2.size());
// sort descending, merge descending, and redisplay
c1.sort(cliext::greater<wchar_t>());
for each (wchar_t elem in c1)
System::Console::Write(" {0}", elem);
System::Console::WriteLine();
c3.sort(cliext::greater<wchar_t>());
for each (wchar_t elem in c3)
System::Console::Write(" {0}", elem);
System::Console::WriteLine();
c3.merge(c1, cliext::greater<wchar_t>());
for each (wchar_t elem in c3)
System::Console::Write(" {0}", elem);
System::Console::WriteLine();
System::Console::WriteLine("c1.size() = {0}", c1.size());
return (0);
}
需求
標頭: < cliext/清單 >
Namespace: cliext