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