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:一个分配器对象,用于此容器的所有内存分配。
first:L'itérateur de la première position dans la plage.
last:L'itérateur de la dernière position dans la plage.
x:Un autre objet set du même type.
il:Un objet d'initiateur de liste, à partir duquel les éléments seront copiés.
Les constructeurs ne retournent jamais de valeur.
Pour les constructeurs vides et de déplacement, la complexité sera constante.
Pour toutes les autres situations, si les éléments sont déjà triés, la complexité de la distance entre les itérateurs sera linéaire.
Si les éléments du conteneur set sont déplacés dans le constructeur de déplacement, tous les pointeurs, itérateurs et références associés à x deviennent invalides.
Accéder à tous les éléments copiés.
En cas d'exception, il n'a aucun effet.
Voyons un exemple simple de constructeur par défaut :
#include <iostream> #include <set> using namespace std; int main(void) { // Constructeur par défaut set<char> s; int size = s.size(); cout << "Taille de l'ensemble s = " << size; return 0; }
Sortie :
La taille de l'ensemble s = 0
Dans l'exemple précédent, s est un ensemble vide, donc la taille est de 0.
Voyons un exemple simple de constructeur de plage :
#include <iostream> #include <set> using namespace std; int main(void) { int evens[] = {2,4,6,8,10}; // Constructeur de plage set<int> myset (evens, evens+5); cout << "Taille du conteneur de collection myset est : " << myset.size(); return 0; }
Sortie :
La taille du conteneur de collection myset est: 5
Dans l'exemple précédent, set myset est composé des éléments evens.
Voyons un exemple simple de constructeur de copie :
#include <iostream> #include <set> using namespace std; int main(void) { //Constructeur par défaut std::set<int> s1; s1.insert(5); s1.insert(10); cout << "Conteneur de collection s1taille est de : " << s1.size(); // Constructeur de copie set<int> s2(s1); cout << "\nNouveau conteneur de collection s2taille est de : " << s2.size(); return 0; }
Sortie :
Le conteneur de collection s1taille est de : 2 Le conteneur de collection de nouvelles s2taille est de : 2
Dans l'exemple précédent, s2est s1une copie de la collection.
Voyons un exemple simple de constructeur de déplacement :
#include <iostream> #include <set> using namespace std; int main(void) { // Constructeur par défaut set<char> s1; s1.insert('x'); s1.insert('y'); cout << "Conteneur de collection s1taille est de : " << s1.size(); // Constructeur de déplacement set<char> s2(move(s1)) ; cout << "\nNouveau conteneur de collection s2taille est de : " << s2.size(); return 0; }
Sortie :
Le conteneur de collection s1taille est de : 2 Le conteneur de collection de nouvelles s2taille est de : 2
Dans l'exemple précédent, s1son contenu est déplacé vers s2 set.
Laissez-nous voir un exemple simple de constructeur par liste d'initialisation :
#include <iostream> #include <set> #include <string> using namespace std; int main() { // Constructeur de liste d'initialisation set<string> fruit { "orange", "apple", "mango", "peach", "grape" }; cout << "La taille de fruit dans le conteneur est : " << fruit.size(); return 0; }
Sortie :
La taille de fruit dans le conteneur est : 5
L'exemple suivant crée un set de fruits avec des chaînes de caractères en tant que clé et l'initialise avec initializer_list.