English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
set构造函数有以下五种用途:
默认构造函数:用于构造具有零个元素的空set容器。
范围构造函数:用于构造内容范围为[first,last)的容器。
复制构造函数:用于构造带有现有容器元素副本的集合。
move构造函数:用于使用move语义与其他元素一起构造容器。
初始化程序列表构造函数:用于构造带有初始化程序列表内容的集合。
explicit set (const key_compare& comp = key_compare(), const allocator_type& alloc = allocator_type()); //到C++ 11 explicit set (const key_compare& comp = key_compare(), const allocator_type& alloc = allocator_type()); explicit set (const allocator_type& alloc); //从C ++ 11开始
template <class InputIterator> set (InputIterator first, InputIterator last, const key_compare& comp = key_compare(), const allocator_type& alloc = allocator_type()); //到C++ 11 template <class InputIterator> set (InputIterator first, InputIterator last, const key_compare& comp = key_compare(), const allocator_type& = allocator_type()); //从C ++ 11开始
set (const set& x); //到C++ 11 set (const set& x); set (const set& x, const allocator_type& alloc); //从C ++ 11开始
set (set&& x); set (set&& x, const allocator_type& alloc); //从C ++ 11开始
set (initializer_list<value_type> il, const key_compare& comp = key_compare(), const allocator_type& alloc = allocator_type()); //从C ++ 11开始
comp:比较函数对象,它接受两个关键参数,如果第一个参数在第二个参数之前,则返回true,否则返回false。默认情况下,它使用less <key_type>谓词。
alloc:一个分配器对象,用于此容器的所有内存分配。
primeiro: O primeiro iterador a ser introduzido no intervalo.
first: O último iterador a ser introduzido no intervalo.
x: Outro objeto do mesmo tipo de conjunto.
il: Um objeto de lista de inicialização, a partir do qual serão copiados os elementos.
Os construtores nunca retornam nenhum valor.
Para o construtor vazio e o construtor de movimento, a complexidade será constante.
Para todos os outros casos, se os elementos já estiverem ordenados, a complexidade da distância entre os iteradores será linear.
Se os elementos do contêiner de conjunto set forem movidos no construtor de movimento, todos os ponteiros, iteradores e referências relacionados a x serão inválidos.
Acesso a todos os elementos copiados.
Se houver exceção, não terá nenhum efeito.
Vamos ver um exemplo simples do construtor padrão:
#include <iostream> #include <set> using namespace std; int main(void) { // Construtor padrão set<char> s; int size = s.size(); cout << "Tamanho do conjunto s = " << size; return 0; }
Saída:
Tamanho do conjunto s = 0
No exemplo acima, s é um conjunto vazio, portanto o tamanho é 0.
Vamos ver um exemplo simples de construtor de faixa:
#include <iostream> #include <set> using namespace std; int main(void) { int evens[] = {2,4,6,8,10}; // Construtor de faixa set<int> myset (evens, evens+5); cout << "Tamanho do contêiner de conjunto myset: " << myset.size(); return 0; }
Saída:
Tamanho do contêiner de conjunto myset: 5
No exemplo acima, o conjunto set myset é composto pelos elementos evens.
Vamos ver um exemplo simples de construtor de cópia:
#include <iostream> #include <set> using namespace std; int main(void) { //Construtor padrão std::set<int> s1; s1.insert(5); s1.insert(10); cout << "Contêiner de conjunto s1Tamanho: : " << s1.size(); // Construtor de cópia set<int> s2(s1); cout << "\nNovo contêiner de conjunto s2Tamanho: : " << s2.size(); return 0; }
Saída:
Contêiner de conjunto s1Tamanho: : " << s 2 Novo contêiner de conjunto s2Tamanho: : " << s 2
No exemplo acima, s2É s1Cópia de cópia do conjunto.
Vamos ver um exemplo simples de construtor de movimento:
#include <iostream> #include <set> using namespace std; int main(void) { // Construtor padrão set<char> s1; s1.insert('x'); s1.insert('y'); cout << "Contêiner de conjunto s1Tamanho: : " << s1.size(); // Construtor de movimento set<char> s2(move(s1))(); cout << "\nNovo contêiner de conjunto s2Tamanho: : " << s2.size(); return 0; }
Saída:
Contêiner de conjunto s1Tamanho: : " << s 2 Novo contêiner de conjunto s2Tamanho: : " << s 2
No exemplo acima, s1Seu conteúdo é movido para s2 set.
Vamos ver um exemplo simples de função construtora com inicialização de lista:
#include <iostream> #include <set> #include <string> using namespace std; int main() { // Construtor de Lista Inicial set<string> fruit { "orange", "apple", "mango", "peach", "grape" }; cout << "O tamanho do fruit dentro do container é: " << fruit.size(); return 0; }
Saída:
O tamanho do fruit dentro do container é: 5
O exemplo acima cria um set de frutas com string como chave e inicializa com initializer_list.