Condividi tramite


list::merge (STL/CLR)

Unisce due sequenze controllate ordinate.

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

Parametri

  • pred
    Operatore di confronto per le coppie dell'elemento.

  • right
    Contenitore da unire in.

Note

La prima funzione membro rimuove tutti gli elementi dalla sequenza controllata da right e li inserisce nella sequenza selezionata.Entrambe le sequenze devono già essere ordinate in base a operator< -- gli elementi non occorre diminuire il valore man mano che si procede con qualsiasi sequenza.La sequenza risultante viene ordinata da operator<.Utilizzare questa funzione membro per unire due sequenze tale tabella in una sequenza che anche valorizzazioni.

La seconda funzione membro si comporta come il primo, con la differenza che le sequenze vengono ordinate in base a pred -- pred(X, Y) deve essere false per qualsiasi elemento X che segue l'elemento Y nella sequenza.È possibile utilizzarlo per unire due sequenze ordinate in base a una funzione predicativa o delegare specificata.

Entrambe le funzioni esegue un'unione stabile -- nessuna coppia di elementi in nessuna delle sequenze controllate originali viene invertita la sequenza selezionata risultante.Inoltre, se una coppia di elementi X e Y nella sequenza selezionata risultante sarà ordine equivalente -- !(X < Y) && !(X < Y) -- un elemento dalla sequenza selezionata originale viene visualizzata prima di un elemento dalla sequenza controllata da right.

Esempio

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

Requisiti

intestazione: <cliext/elenco>

Cliext diSpazio dei nomi:

Vedere anche

Riferimenti

list (STL/CLR)

list::sort (STL/CLR)

list::splice (STL/CLR)