Vettore in C++ (vector )
Un tipo di array dinamico in C++ è il vettore (vettore) .
Vettore (vettore ) — è una struttura dati che è già un modello di un array dinamico.
Gli array ordinari in C++ non hanno funzioni e metodi speciali per lavorarci. I vettori in C++ sono strutture di dati che contengono più funzioni aggiuntive per lavorare con gli elementi.
Creazione di un vettore
#includi <vettore>
...
int principale()
{
// dichiarazione del vettore intero v per 10 elementi
vettore <int> v(10);
// stesso con zero valori iniziali (vettore v1)
vettore <int> v1(10, 0);
...
Imbottitura vettoriale
Metodo 1
Assegniamo memoria per il n -esimo numero di elementi e li compiliamo leggendoli dalla tastiera.
int;
cin>> N;
vettore a(n);
for (int i = 0; i < n; i++)
cin>> a[i];
Metodo 2
Il secondo metodo è necessario quando il numero di elementi è sconosciuto. Innanzitutto, viene creato un vettore vuoto, quindi, utilizzando il metodo push_back() , viene aggiunto un nuovo elemento alla fine del vettore.
int;
cin>> N;
vettorea;
for (int i = 0; i < n; i++) {
intb;
cin>> B;
a.push_back(b);
}
Dimensioni del vettore
int b = a.size();
|
Iteratori
Un modo per scorrere gli elementi nei contenitori (strutture dati) è l' iteratore ( iteratore code>), disponibili in diversi tipi.
Iterator - struttura dati che « indica» ; su qualche elemento contenitore e (per alcuni contenitori) può passare all'elemento precedente/successivo.
Il vettore utilizza il più potente - iteratore ad accesso casuale(iteratore ad accesso casuale ). Un iteratore ad accesso casuale può accedere a un elemento arbitrario del vettore oltre al movimento sequenziale.
I vantaggi degli iteratori
1) Quando si eliminano elementi e si esegue l'iterazione sugli elementi utilizzando gli indici ([] ), è necessario tenere sempre traccia del numero di elementi rimanenti in modo da non andare oltre il vettore e, utilizzando un iteratore, può usare end() che indica la fine del vettore.
2) Utilizzando un iteratore, puoi facilmente rimuovere e inserire dinamicamente elementi in un vettore.
Dichiarazione iteratore
1) Dichiarare un iteratore per un vettore intero e puntarlo al primo elemento nel vettore.
vettore <int> miovettore = { 1, 2, 3, 4, 5 };
vector <int>::iterator it = myvector.begin();
2) Dichiarare un iteratore per un vettore intero e puntarlo all'elemento dopo l'ultimo nel vettore.
vettore <int> miovettore = { 1, 2, 3, 4, 5 };
vector <int>::iterator it = myvector.end(); // punta all'elemento dopo l'ultimo,
vettore <int>::iteratore it1 = miovettore.end() - 1 ; // indica l'ultimo elemento.
Ottenere e visualizzare un valore
Recupero e visualizzazione dell'elemento indicato dall'iteratore.
cout << *it;
Sposta la posizione dell'iteratore
Sposta la posizione dell'iteratore di 3 posizioni in avanti.
avanzare(it, 3);
Creazione di un nuovo iteratore da uno esistente
Crea un nuovo iteratore basato su uno esistente, avanzando di 3 posizioni.
auto it1 = next(it, 3);
Visualizzazione dei valori vettoriali utilizzando un iteratore
vettore<int>::iteratore it;
for (it = miovettore.begin(); it != miovettore.end(); ++it) {
cout<<*it<<" ";
}
Attraversamento vettoriale
Per attraversare il vettore dall'ultimo elemento al primo, viene utilizzato un iteratore inverso reverse_iterator , ottenuto da:
1) rbegin() - restituisce un iteratore inverso che punta all'ultimo elemento del vettore, l'applicazione dell'operazione ++ porta alla transizione all'elemento precedente;
2) rend() - restituisce un iteratore inverso che punta all'elemento precedente del vettore, l'applicazione dell'operazione ++ porta alla transizione al prossimo.
vector<int>::reverse_iterator it = myvector.rbegin(); // punta all'ultimo elemento
vector<int>::reverse_iterator it = myvector.rend(); // punta a un elemento,
// che precede il primo,
|