List::Merge (STL/CLR)

Mescla dois ordenados seqüências controladas.

    void merge(list<Value>% right);
    template<typename Pred2>
        void merge(list<Value>% right, Pred2 pred);

Parâmetros

  • Pred
    Comparador para pares de elemento.

  • direito
    Contêiner para mesclar.

Comentários

A primeira função de membro remove todos os elementos da seqüência controlada por right e inseri-los na seqüência controlada.Ambas as seqüências devem ser ordenadas anteriormente por operator< -elementos não devem diminuir em valor conforme passam por uma seqüência.A seqüência resultante também é ordenada por operator<.Use esta função de membro para mesclar duas seqüências que aumentem de valor em uma seqüência também aumenta de valor.

A segunda função de membro se comporta da mesma primeiro, exceto que as seqüências são ordenadas por pred - pred(X, Y) deve ser false para qualquer elemento X que segue o elemento Y na seqüência.Você pode usá-lo para mesclar duas seqüências ordenadas por uma função de predicado ou representante que você especificar.

As funções executam uma mesclagem estável - nenhum par de elementos de uma das seqüências originais controladas é invertida na seqüência resultante controlada.Além disso, se um par de elementos X e Y na seqüência controlada resultante tem ordenação equivalente - !(X < Y) && !(X < Y) -um elemento da seqüência controlada original aparece antes de um elemento da seqüência controlada por right.

Exemplo

// 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); 
    } 
 
  

Requisitos

Cabeçalho: < cliext/lista >

Namespace: cliext

Consulte também

Referência

lista (STL/CLR)

List::Sort (STL/CLR)

List::splice (STL/CLR)