Constructor y Destructor de Set
Sintaxis:
#include <set> set(); set( const set& conjunto ); set( input_iterator inicio, input_iterator final ); set( input_iterator inicio, input_iterator final, const key_compare& comp ); explicit set( const key_compare& comp ); ~set();
Cada set tiene un constructor por defecto, constructor copia, y destructor.
Contenido |
[editar] Constructor Por Defecto
El constructor por defecto no tiene argumentos. Crea un conjunto vacío del tipo indicado, usando los criterios de almacenamiento y comparación por defecto. Ejecuta en tiempo constante.
[editar] Constructor Copia
El constructor copia por defecto crea una copia de un conjunto. Se ejecuta en tiempo lineal.
[editar] Destructor
El destructor es invocado automáticamente cuando el set deba ser destruído.
[editar] Otros Constructores
set acepta también constructores de rango, como los otros contenedores de la biblioteca STL. Estos constructores toman dos argumentos indicando el inicio y final ("uno pasado del último elemento") de un rango externo, y crean un nuevo conjunto copiando los elementos de ese rango en el orden adecuado. Opcionalmente se puede pasar el criterio de comparación como tercer parámetro comp.
Un constructor explícito toma como único argumento un criterio de comparación comp, y crea un conjunto vacío que siga ese criterio de comparación para ordenar sus elementos. Este constructor debiera ejecutarse en tiempo constante.
[editar] Ejemplos
const int max_nums = 10; int nums[max_nums] = {3,1,4,1,5,9,2,6,5,8}; set<int> digitos; for( int i = 0; i < max_nums; ++i ) digitos.insert(nums[i]); cout << "Los digitos unicos son: "; for( set<int>::const_iterator iter = digitos.begin(); iter != digitos.end(); ++iter ) { cout << *iter << ' '; } cout << '\n';
Al ser ejecutado, este código muestra lo que sigue:
Los digitos unicos son: 1 2 3 4 5 6 8 9
Para construir el mismo set usando los constructores por rangos, ahorrándose el ciclo for de inicialización, se puede hacer de la manera siguiente:
const int max_nums = 10; int nums[max_nums] = {3,1,4,1,5,9,2,6,5,8}; set<int> digitos (nums, nums + max_nums);