Compartir a través de


set::set

Construye un conjunto que está vacío o que es una copia de todo o de parte de otro conjunto.

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

Parámetros

Parámetro

Descripción

Al

Clase de asignador de almacenamiento que se utilizará para este objeto set, que de forma predeterminada es Allocator.

Comp

Función de comparación de tipo const Traits que se utiliza para ordenar los elementos del conjunto, que de forma predeterminada es Compare.

Rght

Conjunto del que el conjunto construido va a ser una copia.

First

Posición del primer elemento en el intervalo de elementos que se va a copiar.

Last

Posición del primer elemento más allá del intervalo de elementos que se va a copiar.

IList

initializer_list de la que se van a copiar los elementos.

Comentarios

Todos los constructores almacenan un tipo de objeto de asignador que administra el almacenamiento en memoria del conjunto y que se puede devolver más adelante llamando a get_allocator. El parámetro de asignador se suele omitir en las declaraciones de clase y las macros de preprocesamiento que se utilizan para sustituir asignadores alternativos.

Todos los constructores inicializan sus conjuntos.

Todos los constructores almacenan un objeto de función de tipo Traits que se utiliza para establecer un orden entre las claves del conjunto y que se puede devolver más adelante llamando a key_comp.

Los tres primeros constructores especifican un conjunto inicial vacío, el segundo especifica el tipo de función de comparación (comp) que se utilizará para establecer el orden de los elementos y el tercero especifica explícitamente el tipo de asignador (al) que se va a utilizar. La palabra clave explicit suprime ciertas clases de conversión automática de tipos.

El cuarto constructor especifica una copia del conjunto right.

Los tres constructores siguientes utilizan una initializer_list para especificar los elementos.

Los tres constructores siguientes copian el intervalo [first, last) de un conjunto especificando de forma cada vez más explícita el tipo de función de comparación de clase Traits y Allocator.

El octavo constructor especifica una copia del conjunto moviendo right.

Ejemplo

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

Requisitos

Encabezado: <set>

Espacio de nombres: std

Vea también

Referencia

set (Clase)

Biblioteca de plantillas estándar