Partager via


liste : : fusion (STL/CLR)

Fusionne deux séquences contrôlées ordonnées.

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

Paramètres

  • pred
    Comparateur pour les paires d'éléments.

  • right
    Conteneur dans lequel fusionner.

Notes

La première fonction membre supprime tous les éléments de la séquence contrôlée par right et les insère dans la séquence contrôlée. Les séquences doivent être préalablement triées par operator< -- les éléments ne doivent pas diminuer de valeur lorsque vous progressez dans l'une ou l'autre des séquences. La séquence qui en résulte est également ordonnée par operator<. Vous utilisez cette fonction membre pour fusionner deux séquences qui augmentent de valeur dans une séquence qui augmente également de valeur.

La deuxième fonction membre se comporte de la même manière que la première, sauf que les séquences sont triées par pred -- pred(X, Y) doit être faux pour un élément X qui suit l'élément Y de la séquence résultante. Vous l'utilisez pour fusionner deux séquences ordonnées par une fonction de prédicat ou un délégué que vous spécifiez.

Les deux fonctions effectuent une fusion stable -- aucune paire d'éléments l'une ou l'autre des séquence contrôlée originale n'est inversée dans la séquence contrôlée obtenue. Aussi, si une paire d'éléments X et Ydans la séquence obtenue contrôlée a une organisation équivalente (!(X < Y) && !(X < Y) ), un élément de la séquence contrôlée originale apparaît avant un élément de la séquence contrôlée par right.

Exemple

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

Configuration requise

En-tête : <cliext/list>

Espace de noms cliext

Voir aussi

Référence

list (STL/CLR)

liste : : tri (STL/CLR)

liste : : ajout (STL/CLR)