set (STL/CLR)
La classe modello descrive un oggetto che controlla una sequenza di elementi di lunghezza variabile che ha accesso bidirezionale. Utilizzare il contenitore set per gestire una sequenza di elementi come un albero ordinato (quasi) bilanciato di nodi, ciascuno contenente un elemento.
Nella seguente descrizione, GValue è uguale a GKey, che a sua volta è uguale a Key a meno che quest'ultimo sia un tipo di riferimento, nel qual caso è Key^.
template<typename Key>
ref class set
: public
System::ICloneable,
System::Collections::IEnumerable,
System::Collections::ICollection,
System::Collections::Generic::IEnumerable<GValue>,
System::Collections::Generic::ICollection<GValue>,
System::Collections::Generic::IList<GValue>,
Microsoft::VisualC::StlClr::ITree<Gkey, GValue>
{ ..... };
Parametri
- Chiave
Tipo del componente chiave di un elemento nella sequenza controllata.
Membri
Definizione dei tipi |
Descrizione |
---|---|
Il tipo di un iteratore costante della sequenza controllata. |
|
Il tipo di un riferimento costante a un elemento. |
|
Il tipo di un iteratore di inversione costante della sequenza controllata. |
|
Il tipo di una distanza (con o senza segno) tra due elementi. |
|
Il tipo della generica interfaccia per il contenitore. |
|
Il tipo di un iteratore per l'interfaccia generica del contenitore. |
|
Il tipo di un iteratore inverso per l'interfaccia generica del contenitore. |
|
Il tipo di un elemento per l'interfaccia generica del contenitore. |
|
Il tipo di un iteratore della sequenza controllata. |
|
Il delegato di ordinamento per due chiavi. |
|
Il tipo di una chiave di ordinamento. |
|
Il tipo di un riferimento a un elemento. |
|
Il tipo di un iteratore inverso della sequenza controllata. |
|
Il tipo di una distanza non negativa tra due elementi. |
|
Il delegato di ordinamento per due valori elemento. |
|
Il tipo di un elemento. |
Funzione membro |
Descrizione |
---|---|
Definisce l'inizio della sequenza controllata. |
|
Rimuove tutti gli elementi. |
|
Conta gli elementi che corrispondono a una chiave specificata. |
|
Verifica se non sono presenti elementi. |
|
Definisce la fine della sequenza controllata. |
|
Trova l'intervallo che corrisponde alla chiave specificata. |
|
Rimuove gli elementi alle posizioni specificate. |
|
Viene trovato un elemento che corrisponde alla chiave specificata. |
|
Aggiunge elementi. |
|
Copia il delegato di ordinamento per due chiavi. |
|
Trova l'inizio dell'intervallo che corrisponde a una chiave specificata. |
|
Costruisce un oggetto valore. |
|
Definisce l'inizio della sequenza inversa controllata. |
|
Definisce la fine della sequenza inversa controllata. |
|
Costruisce un oggetto contenitore. |
|
Conta il numero di elementi. |
|
Scambia il contenuto di due contenitori. |
|
Copia la sequenza controllata in un nuovo array. |
|
Trova la fine dell'intervallo che corrisponde alla chiave specificata. |
|
Copia il delegato di ordinamento per due valori di elementi. |
Operatore |
Descrizione |
---|---|
Sostituisce la sequenza controllata. |
|
Determina se un oggetto set non equivale a un altro oggetto set. |
|
Determina se un oggetto set è minore di un altro oggetto set. |
|
Determina se un oggetto set è minore o uguale a un altro oggetto set. |
|
Determina se un oggetto set equivale a un altro oggetto set. |
|
Determina se un oggetto set è maggiore di un altro oggetto set. |
|
Determina se un oggetto set è maggiore o uguale a un altro oggetto set. |
Interfacce
Interfaccia |
Descrizione |
---|---|
Duplicare un oggetto. |
|
Mettere in sequenza gli elementi. |
|
Gestire il gruppo di elementi. |
|
Mettere in sequenza gli elementi tipizzati. |
|
Gestire il gruppo di elementi tipizzati. |
|
ITree<Key, Value> |
Gestire il contenitore generico. |
Note
L'oggetto alloca e libera la memoria per la sequenza che controlla come singoli nodi. Inserisce gli elementi in un albero (quasi) bilanciato che mantiene ordinato modificando gli archi tra i nodi, mai copiando il contenuto di un nodo in un altro. Ciò significa che è possibile inserire e rimuovere liberamente elementi senza pregiudicare gli elementi rimanenti.
L'oggetto ordina la sequenza che controlla chiamando un oggetto delegato memorizzato di tipo set::key_compare (STL/CLR). È possibile specificare l'oggetto delegato memorizzato quando si costruisce il set; se non si specifica l'oggetto delegato, l'operazione predefinita è il confronto operator<(key_type, key_type). È possibile accedere a questo oggetto archiviato chiamando la funzione membro set::key_comp (STL/CLR)().
Tale oggetto delegato deve imporre un ordine debole stretto sulle chiavi di tipo set::key_type (STL/CLR). Ciò significa, per una qualunque coppia di chiavi X e Y:
key_comp()(X, Y) restituisce lo stesso risultato booleano a ogni chiamata.
Se key_comp()(X, Y) è true, allora key_comp()(Y, X) deve essere false.
Se key_comp()(X, Y) è true, allora si dice che X viene ordinato prima di Y.
Se !key_comp()(X, Y) && !key_comp()(Y, X) è true, allora si dice che X e Y abbiano ordine equivalente.
Per qualsiasi elemento X che precede Y nella sequenza controllata, key_comp()(Y, X) è false. (Per l'oggetto delegato predefinito, le chiavi non diminuiscono mai di valore). A differenza della classe modello set (STL/CLR), un oggetto della classe modello set non richiede che le chiavi per tutti gli elementi siano univoche. (Due o più chiavi possono avere ordine equivalente.)
Ogni elemento viene utilizzato sia come chiave che come valore. La sequenza viene rappresentata in una modalità che consente la ricerca, l'inserimento e la rimozione di un elemento arbitrario attraverso un numero di operazioni proporzionale al logaritmo del numero di elementi della sequenza (tempo logaritmico). Inoltre, inserire un elemento non invalida gli iteratori e la rimozione di un elemento invalida solo gli iteratori che puntano all'elemento rimosso.
Un set supporta iteratori bidirezionali, ciò significa che, fornito un iteratore che designa un elemento nella sequenza selezionata, è possibile avanzare agli elementi adiacenti. Un nodo head speciale corrisponde all'iteratore restituito da set::end (STL/CLR)(). È possibile decrementare questo iteratore per raggiungere l'ultimo elemento della sequenza selezionata, se presente. È possibile incrementare un iteratore set per ottenere il nodo head, che verrà quindi confrontato per uguaglianza a end(). Invece non è possibile dereferenziare l'iteratore restituito da end().
Si noti che non è possibile fare riferimento a un elemento set se viene fornita direttamente la posizione numerica: ciò richiede un iteratore di accesso casuale.
Un iteratore set memorizza un handle al nodo set collegato, che a sua volta memorizza un handle al relativo contenitore. È possibile utilizzare gli iteratori solo con i relativi oggetti contenitore. Un iteratore set rimane valido a condizione che il relativo nodo set è associato a qualche set. Inoltre, un iteratore valido è dereferenziabile (è possibile utilizzarlo per accedere o modificare il valore dell'elemento che definisce) a condizione che non sia uguale a end().
Cancellare o rimuovere un elemento risulta in una chiamata al distruttore per il valore archiviato. Eliminare il contenitore cancella tutti gli elementi. Pertanto, un contenitore il cui tipo di elemento è una classe di riferimento garantisce che nessun elemento sopravviva all'eliminazione del contenitore. Si noti, tuttavia, che un contenitore di handle not elimina i relativi elementi.
Requisiti
Intestazione: <cliext/set>
Spazio dei nomi: cliext