Udostępnij za pośrednictwem


set::set

Konstruuje zestaw, który jest pusty lub jest kopią całości lub części innego zestawu.

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

Parametry

Parametr

Opis

Al

Klasa przydzielania pamięci do użycia w tym obiekcie zestawu, domyślnie to Program przydzielania.

Comp

Funkcja porównywania typu const Traits używana do uporządkowania elementów w zestawie, domyślnie to Compare.

Rght

Zestaw, którego kopią jest konstruowany zestaw.

First

Pozycja pierwszego elementu w zakresie elementów, który ma być skopiowany.

Last

Pozycja pierwszego elementu poza zakresem elementów, które mają zostać skopiowane.

IList

initializer_list, z której należy skopiować elementy.

Uwagi

Wszystkie konstruktory przechowują typ obiektu programu przydzielania, który zarządza pamięcią dla zestawu i później może być zwrócony przez wywołanie get_allocator.Parametr programu przydzielania jest często omijany w deklaracjach klas i makra przetwarzające pierwotnie są używane do zastąpienia alternatywnych programów przydzielania.

Wszystkie konstruktory inicjują ich zestawy.

Wszystkie konstruktory przechowują obiekt funkcji typu Traits, służący do ustalenia kolejności wśród kluczy zestawu i który później może być zwrócony przez wywołanie key_comp.

Pierwsze trzy konstruktory określają pusty początkowy zestaw, dodatkowo, drugi określający typ funkcji porównania (comp) stosowanej przy ustalaniu kolejności elementów, a trzeci jawnie określający typ programu przydzielania (al), który ma być użyty.Słowo kluczowe explicit powoduje pominięcie niektórych rodzajów automatycznej konwersji typów.

Czwarty konstruktor określa kopię zestawu right.

Kolejne trzy konstruktory używają initializer_list do określenia elementów.

Kolejne trzy konstruktory kopiują zakres [first, last) z zestawu z rosnącą jawnością w określaniu typu funkcji porównania klasy Traits i Allocator.

Ósmy konstruktor określa kopię zestawu, przesuwając right.

Przykład

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

Wymagania

Nagłówek: <set>

Przestrzeń nazw: std

Zobacz też

Informacje

set — Klasa

Standardowa biblioteka szablonów