English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Tutorial di Base C++

C++ Flow Control

Funzione in C++

C++ Array & String

C++ Data Structures

C++ Class & Object

Puntatore in C++

Ereditarietà in C++

Tutorial STL di C++

C++ Reference Manual

Usage and example of C++ set constructor (constructor)

Set (insieme) STL in C++

The set constructor has the following five uses:

  1. Default constructor:Used to construct an empty set container with zero elements.

  2. Range constructor:Used to construct a container with a content range of [first, last).

  3. Copy constructor:Used to construct a set with a copy of existing container elements.

  4. Move constructor:Used to construct the container with move semantics along with other elements.

  5. Initialization list constructor:Used to construct a set with initialization list content.

Syntax

Default constructor

explicit set (const key_compare& comp = key_compare(),
              const allocator_type& alloc = allocator_type()); // to C++ 11
explicit set (const key_compare& comp = key_compare(),
              const allocator_type& alloc = allocator_type());
explicit set (const allocator_type& alloc);            // A partire da C++ 11

Costruttore di gamma

template <class InputIterator>
  set (InputIterator first, InputIterator last,
       const key_compare& comp = key_compare(),
       const allocator_type& alloc = allocator_type());        // Fino a C++ 11
template <class InputIterator>
  set (InputIterator first, InputIterator last,
       const key_compare& comp = key_compare(),
       const allocator_type& = allocator_type());            // A partire da C++ 11

Costruttore di copia

set (const set& x);                                        // Fino a C++ 11
set (const set& x);
set (const set& x, const allocator_type& alloc);            // A partire da C++ 11

Costruttore di movimento

set (set&& x);
set (set&& x, const allocator_type& alloc);            // A partire da C++ 11

Costruttore lista inizializzatore

set (initializer_list<value_type> il,
     const key_compare& comp = key_compare(),
     const allocator_type& alloc = allocator_type());        // A partire da C++ 11

Parametro

comp:Un oggetto funzione di confronto, che accetta due parametri chiave, restituisce true se il primo parametro precede il secondo, altrimenti restituisce false. Di default, utilizza il predicato less <key_type>.

alloc:Un oggetto allocatore, utilizzato per tutte le assegnazioni di memoria di questo contenitore.

first:Inserisce l'iteratore nella prima posizione della gamma.

last:Inserisce l'iteratore nell'ultima posizione della gamma.

x:Un altro oggetto set dello stesso tipo.

il:Un oggetto lista inizializzatore, da cui verranno copiati gli elementi.

Valore di ritorno

Il costruttore non restituisce alcun valore.

Complessità

Per i costruttori vuoti e di spostamento, la complessità sarà costante.

Per tutte le altre situazioni, se gli elementi sono già ordinati, la complessità della distanza tra gli iteratori sarà lineare.

Validità degli iteratori

Se gli elementi del contenitore di set vengono spostati nel costruttore di spostamento, tutti i puntatori, gli iteratori e i riferimenti relativi a x diventeranno invalidi.

Conflitto dei dati

Accedere a tutti gli elementi copiati.

Sicurezza delle eccezioni

In caso di eccezione, non avrà alcun effetto.

Esempio 1

Lasciate che vi mostriamo un esempio semplice del costruttore predefinito:

#include <iostream>
#include <set>
using namespace std;
int main(void) {
   // Costruttore predefinito
   set<char> s;
  
   int size = s.size(); 
   cout << "La dimensione di set s = " << size;
   return 0;
}

Output:

La dimensione di set s = 0

Nel esempio sopra, s è un insieme vuoto, quindi la dimensione è 0.

Esempio 2

Lasciate che vi mostriamo un esempio semplice di costruttore di intervallo:

#include <iostream>
#include <set>
using namespace std;
int main(void) {
   int evens[] = {2,4,6,8,10};
  
   // Costruttore di intervallo
   set<int> myset(evens, evens+5);  
   cout << "La dimensione del contenitore di set myset è: " << myset.size();
   return 0;
}

Output:

La dimensione del contenitore di set myset è: 5

Nel esempio sopra, il set myset è composto dagli elementi evens.

Esempio 3

Lasciate che vi mostriamo un esempio di costruttore di copia semplice:

#include <iostream>
#include <set>
using namespace std;
int main(void) {
   // Costruttore predefinito
   std::set<int> s1;
   s1.insert(5);
   s1.insert(10);
   cout << "La dimensione del contenitore di set s1 è: " << s1.size();
  
   // Costruttore di copia
   set<int> s2(s1);
   cout << "\nLa dimensione del contenitore di set s2 è: " << s2.size();
   return 0;
}

Output:

La dimensione del contenitore di set s1 è: 2
La dimensione del contenitore di set s2 è: 2

Nel esempio sopra, s2 è una copia di backup del set s1.

Esempio 4

Lasciate che vi mostriamo un esempio di costruttore di spostamento semplice:

#include <iostream>
#include <set>
using namespace std;
int main(void) {
   // Costruttore predefinito
   set<char> s1;
   s1.insert('x');
   s1.insert('y');
   cout << "La dimensione del contenitore di set s1 è: " << s1.size();
   // Costruttore di spostamento
   set<char> s2(move(s1));
   cout << "\nLa dimensione del contenitore di set s2 è: " << s2.size();
   return 0;
}

Output:

La dimensione del contenitore di set s1 è: 2
La dimensione del contenitore di set s2 è: 2

Nel esempio sopra, il contenuto di s1 è stato spostato nel set s2.

Esempio 5

Lasciate che vi mostriamo un esempio di costruttore di lista iniziale semplice:

#include <iostream>
#include <set>
#include <string>
using namespace std;
int main() {
   // Costruttore con initializer_list
   set<string> fruit {
      "orange", "apple", "mango", "peach", "grape"
   };
   cout << "La dimensione di fruit nel contenitore è: " << fruit.size();
   return 0;
}

Output:

La dimensione di fruit nel contenitore è: 5

Esempio sopra: creare un set di frutta con stringa come chiave e inizializzare con initializer_list.

Set (insieme) STL in C++