list::merge (STL/CLR)
2 つの順序付けされた被制御シーケンスをマージします。
void merge(list<Value>% right);
template<typename Pred2>
void merge(list<Value>% right, Pred2 pred);
パラメーター
pred
要素のペアの比較子。[right]
マージするコンテナー。
解説
一つ目のメンバー関数は right によって制御されるシーケンスのすべての要素を削除し、被制御シーケンス内の挿入します。シーケンスには、両方とも operator< で事前に並べ替える必要があります -- 要素は、値でいずれかのシーケンスで進行とともに減ってはできません。結果のシーケンスは、 operator<に並べ替えられます。このシーケンスに 2 文字のシーケンスをその値を増加またはマージにこのメンバー関数を値を増やす使用します。
2 番目のメンバー関数は、まず 1 番目と同様に動作します。ただし、シーケンスは pred に並べ替えられます -- pred(X, Y) は、シーケンスの要素 Y に続くすべての要素 X の場合は false である必要があります。述語関数によって並べられた 2 二つのシーケンスを結合するか、指定できます。デリゲートするときに使用します。
関数も、安定したマージを実行します。 -- 元の被制御シーケンスの要素のペアは、被制御シーケンスの反転しません。また、被制御シーケンスの要素 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/リスト>
名前空間: の cliext