Condividi tramite


set::set

Costruisce un set vuoto o che è una copia totale o parziale di qualche altro set.

set( );
explicit set(
    const Traits& Comp
);
set(
    const Traits& Comp,
    const Allocator& Al
);
set(
    const set& Right
);
set(
    set&& Right
);
set(
    initializer_list<Type> IList
);
set(
    initializer_list<Type> IList,
    const Compare& Comp
);
set(
    initializer_list<Type> IList,
    const Compare& Comp, 
    const Allocator& Al
);

template<class InputIterator>
    set(
        InputIterator First,
        InputIterator Last
    );
template<class InputIterator>
    set(
        InputIterator First,
        InputIterator Last,
        const Traits& Comp
    );
template<class InputIterator>
    set(
        InputIterator First,
        InputIterator Last,
        const Traits& Comp,
        const Allocator& Al
    );

Parametri

Parametro

Descrizione

Al

La classe allocatore di memoria da utilizzare per questo oggetto set, che per impostazione predefinita corrisponde ad Allocator.

Comp

La funzione di confronto di tipo const Traits utilizzata per ordinare gli elementi nel set, che per impostazione predefinita corrisponde a Compare.

Rght

Il set di cui il set costruito deve essere una copia.

First

Posizione del primo elemento nella serie di elementi da copiare.

Last

Posizione del primo elemento oltre la serie di elementi da copiare.

IList

La initializer_list da cui copiare gli elementi.

Note

Tutti i costruttori memorizzano un tipo di oggetto allocatore che gestisce l'archiviazione in memoria per il set e che successivamente può essere restituito chiamando get_allocator. Il parametro di allocazione viene spesso omesso nelle dichiarazioni di classe e nelle macro del preprocessore utilizzate per sostituire allocatori alternativi.

Tutti i costruttori inizializzano i propri set.

Tutti i costruttori archiviano un oggetto funzione di tipo Traits utilizzato per stabilire un ordine tra le chiavi del set e che successivamente possono essere restituite chiamando key_comp.

I primi tre costruttori specificano un set iniziale vuoto, il secondo specifica il tipo di funzione di confronto (comp) da utilizzare per stabilire l'ordine degli elementi e il terzo specifica in modo esplicito il tipo di allocatore (al) da utilizzare. La parola chiave explicit elimina certi tipi di conversione automatica dei tipi.

Il quarto costruttore specifica una copia del set right.

I tre costruttori successivi utilizzano una initializer_list per specificare gli elementi.

I tre costruttori successivi copiano l'intervallo [first, last) di un set con più chiarezza esplicita nello specificare il tipo di funzione di confronto di classe Traits e di Allocator.

L'ottavo costruttore specifica una copia del set spostando right.

Esempio

// set_set.cpp
// compile with: /EHsc
#include <set>
#include <iostream>

int main()
{
    using namespace std;

    // Create an empty set s0 of key type integer
    set <int> s0;

    // Create an empty set s1 with the key comparison
    // function of less than, then insert 4 elements
    set <int, less<int> > s1;
    s1.insert(10);
    s1.insert(20);
    s1.insert(30);
    s1.insert(40);

    // Create an empty set s2 with the key comparison
    // function of less than, then insert 2 elements
    set <int, less<int> > s2;
    s2.insert(10);
    s2.insert(20);

    // Create a set s3 with the 
    // allocator of set s1
    set <int>::allocator_type s1_Alloc;
    s1_Alloc = s1.get_allocator();
    set <int> s3(less<int>(), s1_Alloc);
    s3.insert(30);

    // Create a copy, set s4, of set s1
    set <int> s4(s1);

    // Create a set s5 by copying the range s1[_First, _Last)
    set <int>::const_iterator s1_bcIter, s1_ecIter;
    s1_bcIter = s1.begin();
    s1_ecIter = s1.begin();
    s1_ecIter++;
    s1_ecIter++;
    set <int> s5(s1_bcIter, s1_ecIter);

    // Create a set s6 by copying the range s4[_First, _Last)
    // and with the allocator of set s2
    set <int>::allocator_type s2_Alloc;
    s2_Alloc = s2.get_allocator();
    set <int> s6(s4.begin(), ++s4.begin(), less<int>(), s2_Alloc);

    cout << "s1 =";
    for (auto i : s1)
        cout << " " << i;
    cout << endl;

    cout << "s2 = " << *s2.begin() << " " << *++s2.begin() << endl;

    cout << "s3 =";
    for (auto i : s3)
        cout << " " << i;
    cout << endl;

    cout << "s4 =";
    for (auto i : s4)
        cout << " " << i;
    cout << endl;

    cout << "s5 =";
    for (auto i : s5)
        cout << " " << i;
    cout << endl;

    cout << "s6 =";
    for (auto i : s6)
        cout << " " << i;
    cout << endl;

    // Create a set by moving s5
    set<int> s7(move(s5));
    cout << "s7 =";
    for (auto i : s7)
        cout << " " << i;
    cout << endl;

    // Create a set with an initializer_list
    cout << "s8 =";
    set<int> s8{ { 1, 2, 3, 4 } };
    for (auto i : s8)
        cout << " " << i;
    cout << endl;

    cout << "s9 =";
    set<int> s9{ { 5, 6, 7, 8 }, less<int>() };
    for (auto i : s9)
        cout << " " << i;
    cout << endl;

    cout << "s10 =";
    set<int> s10{ { 10, 20, 30, 40 }, less<int>(), s9.get_allocator() };
    for (auto i : s10)
        cout << " " << i;
    cout << endl;
}
  

Requisiti

Intestazione: <set>

Spazio dei nomi: std

Vedere anche

Riferimenti

Classe set

Libreria di modelli standard