I vettori sono gli stessi degli array dinamici con la possibilità di ridimensionarsi automaticamente quando un elemento viene inserito o eliminato, con la loro archiviazione gestita automaticamente dal contenitore. Gli elementi vettoriali vengono inseriti in una memoria contigua in modo che sia possibile accedervi e attraversarli utilizzando gli iteratori. Nei vettori i dati vengono inseriti alla fine. L'inserimento alla fine richiede tempo differenziale, poiché a volte potrebbe essere necessario estendere l'array. La rimozione dell'ultimo elemento richiede solo un tempo costante perché non avviene alcun ridimensionamento. L'inserimento e la cancellazione all'inizio o al centro sono lineari nel tempo.
Cos'è std::vettore in C++?
std::vettore in C++ è il modello di classe che contiene il contenitore vettoriale e le relative funzioni membro. È definito all'interno del file di intestazione. Le funzioni membro della classe std::vettore forniscono varie funzionalità ai contenitori vettoriali.
Sintassi per dichiarare Vector in C++
std::vector vectorName;>
dove il tipo di dati è il tipo di dati di ciascun elemento del vettore. Puoi rimuovere std:: se hai già utilizzato lo spazio dei nomi std.
Inizializzazione di Vector in C++
Possiamo inizializzare un vettore nei seguenti modi:
1. Inizializzazione tramite elenco
Questa inizializzazione viene eseguita con una dichiarazione. Qui passiamo l'elenco degli elementi al costruttore del vettore per creare un vettore con gli elementi specificati.
vector name({ value1, value2, value3 .... });>
2. Inizializzazione Con un unico valore
Anche questa inizializzazione viene eseguita con la dichiarazione. Qui specifichiamo la dimensione del vettore e quindi inizializziamo ogni elemento del vettore con il valore.
vector name(size, value);>
3. Inizializzazione da un altro vettore
Questa inizializzazione viene utilizzata per creare un vettore che è una copia esatta di other_vec.
vector name(other_vec);>
Alcune funzioni membro comunemente usate della classe std::vettori sono scritte di seguito:
Iteratori
- inizio() – Restituisce un iteratore che punta al primo elemento nel vettore
- FINE() – Restituisce un iteratore che punta all'elemento teorico che segue l'ultimo elemento nel vettore
- rbegin() – Restituisce un iteratore inverso che punta all'ultimo elemento del vettore (inizio inverso). Si sposta dall'ultimo al primo elemento
- rendere() – Restituisce un iteratore inverso che punta all'elemento teorico che precede il primo elemento nel vettore (considerato come estremità inversa)
- cbegin() – Restituisce un iteratore costante che punta al primo elemento nel vettore.
- alcuni() – Restituisce un iteratore costante che punta all'elemento teorico che segue l'ultimo elemento nel vettore.
- crbegin() – Restituisce un iteratore inverso costante che punta all'ultimo elemento nel vettore (inizio inverso). Si sposta dall'ultimo al primo elemento
- cred() – Restituisce un iteratore inverso costante che punta all'elemento teorico che precede il primo elemento nel vettore (considerato come estremità inversa)
C++
// C++ program to illustrate the> // iterators in vector> #include> #include> > using> namespace> std;> > int> main()> {> > vector<> int> >g1;> > > for> (> int> i = 1; i <= 5; i++)> > g1.push_back(i);> > > cout <<> 'Output of begin and end: '> ;> > for> (> auto> i = g1.begin(); i != g1.end(); ++i)> > cout << *i <<> ' '> ;> > > cout <<> '
Output of cbegin and cend: '> ;> > for> (> auto> i = g1.cbegin(); i != g1.cend(); ++i)> > cout << *i <<> ' '> ;> > > cout <<> '
Output of rbegin and rend: '> ;> > for> (> auto> ir = g1.rbegin(); ir != g1.rend(); ++ir)> > cout << *ir <<> ' '> ;> > > cout <<> '
Output of crbegin and crend : '> ;> > for> (> auto> ir = g1.crbegin(); ir != g1.crend(); ++ir)> > cout << *ir <<> ' '> ;> > > return> 0;> }> |
>
>Produzione
Output of begin and end: 1 2 3 4 5 Output of cbegin and cend: 1 2 3 4 5 Output of rbegin and rend: 5 4 3 2 1 Output of crbegin and crend : 5 4 3 2 1>
Capacità
- misurare() – Restituisce il numero di elementi nel vettore.
- dimensione_massima() – Restituisce il numero massimo di elementi che il vettore può contenere.
- capacità() – Restituisce la dimensione dello spazio di archiviazione attualmente allocato al vettore espressa come numero di elementi.
- ridimensionare(n) – Ridimensiona il contenitore in modo che contenga 'n' elementi.
- vuoto() – Restituisce se il contenitore è vuoto.
- rimpicciolirsi per starci dentro() – Riduce la capacità del contenitore per adattarlo alle sue dimensioni e distrugge tutti gli elementi oltre la capacità.
- Riserva() – Richiede che la capacità del vettore sia almeno sufficiente a contenere n elementi.
C++
// C++ program to illustrate the> // capacity function in vector> #include> #include> > using> namespace> std;> > int> main()> {> > vector<> int> >g1;> > > for> (> int> i = 1; i <= 5; i++)> > g1.push_back(i);> > > cout <<> 'Size : '> << g1.size();> > cout <<> '
Capacity : '> << g1.capacity();> > cout <<> '
Max_Size : '> << g1.max_size();> > > // resizes the vector size to 4> > g1.resize(4);> > > // prints the vector size after resize()> > cout <<> '
Size : '> << g1.size();> > > // checks if the vector is empty or not> > if> (g1.empty() ==> false> )> > cout <<> '
Vector is not empty'> ;> > else> > cout <<> '
Vector is empty'> ;> > > // Shrinks the vector> > g1.shrink_to_fit();> > cout <<> '
Vector elements are: '> ;> > for> (> auto> it = g1.begin(); it != g1.end(); it++)> > cout << *it <<> ' '> ;> > > return> 0;> }> |
>
vantaggi e svantaggi della tecnologia
>Produzione
Size : 5 Capacity : 8 Max_Size : 4611686018427387903 Size : 4 Vector is not empty Vector elements are: 1 2 3 4>
Accesso agli elementi
- operatore di riferimento [g] – Restituisce un riferimento all'elemento nella posizione 'g' nel vettore
- a(g) – Restituisce un riferimento all'elemento nella posizione 'g' nel vettore
- davanti() – Restituisce un riferimento al primo elemento nel vettore
- Indietro() – Restituisce un riferimento all'ultimo elemento del vettore
- C++
// C++ program to illustrate the>
// element access in vector>
#include>
using>
namespace>
std;>
>
int>
main()>
{>
>
vector<>
int>
>g1;>
>
>
for>
(>
int>
i = 1; i <= 10; i++)>
>
g1.push_back(i * 10);>
>
>
cout <<>
' Reference operator [g] : g1[2] = '>
<< g1[2];>
>
>
cout <<>
' at : g1.at(4) = '>
<< g1.at(4);>
>
>
cout <<>
' front() : g1.front() = '>
<< g1.front();>
>
>
cout <<>
' back() : g1.back() = '>
<< g1.back();>
>
>
// pointer to the first element>
>
int>
* pos = g1.data();>
>
>
cout <<>
' The first element is '>
<< *pos;>
>
return>
0;>
}>
>
>
ProduzioneReference operator [g] : g1[2] = 30 at : g1.at(4) = 50 front() : g1.front() = 10 back() : g1.back() = 100 The first element is 10>
Modificatori
- assegnare() – Assegna nuovo valore agli elementi del vettore sostituendo quelli vecchi
- respingere() – Spinge gli elementi in un vettore da dietro
- pop_back() – Viene utilizzato per far apparire o rimuovere elementi da un vettore dal retro.
- inserire() – Inserisce nuovi elementi prima dell'elemento nella posizione specificata
- cancellare() – Viene utilizzato per rimuovere elementi da un contenitore dalla posizione o dall'intervallo specificato.
- scambio() – Viene utilizzato per scambiare il contenuto di un vettore con un altro vettore dello stesso tipo. Le dimensioni possono differire.
- chiaro() – Serve per rimuovere tutti gli elementi del contenitore vettoriale
- posizionare() – Estende il contenitore inserendo un nuovo elemento in posizione
- posto_indietro() – Serve per inserire un nuovo elemento nel contenitore del vettore, il nuovo elemento viene aggiunto alla fine del vettore
C++
// C++ program to illustrate the>
// Modifiers in vector>
#include>
#include>
using>
namespace>
std;>
>
int>
main()>
{>
>
// Assign vector>
>
vector<>
int>
>In;>
>
>
// fill the vector with 10 five times>
>
v.assign(5, 10);>
>
>
cout <<>
'The vector elements are: '>
;>
>
for>
(>
int>
i = 0; i cout << v[i] << ' '; // inserts 15 to the last position v.push_back(15); int n = v.size(); cout << ' The last element is: ' << v[n - 1]; // removes last element v.pop_back(); // prints the vector cout << ' The vector elements are: '; for (int i = 0; i cout << v[i] << ' '; // inserts 5 at the beginning v.insert(v.begin(), 5); cout << ' The first element is: ' << v[0]; // removes the first element v.erase(v.begin()); cout << ' The first element is: ' << v[0]; // inserts at the beginning v.emplace(v.begin(), 5); cout << ' The first element is: ' << v[0]; // Inserts 20 at the end v.emplace_back(20); n = v.size(); cout << ' The last element is: ' << v[n - 1]; // erases the vector v.clear(); cout << ' Vector size after clear(): ' << v.size(); // two vector to perform swap vector
v1, v2; v1.push_back(1); v1.push_back(2); v2.push_back(3); v2.push_back(4); cout<< ' Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; // Swaps v1 and v2 v1.swap(v2); cout << ' After Swap Vector 1: '; for (int i = 0; i cout << v1[i] << ' '; cout << ' Vector 2: '; for (int i = 0; i cout << v2[i] << ' '; }> >
>
Produzionealgoritmo per la ricerca binaria
The vector elements are: 10 10 10 10 10 The last element is: 15 The vector elements are: 10 10 10 10 10 The first element is: 5 The first element is: 10 The first element is: 5 The last element is: 20 Vector size after erase(): 0 Vector 1: 1 2 Vector 2: 3 4 After Swap Vector 1: 3 4 Vector 2: 1 2>
La complessità temporale per eseguire varie operazioni sui vettori è-
- Accesso casuale – costante O(1)
- Inserimento o rimozione di elementi alla fine – costante O(1)
- Inserimento o rimozione di elementi – lineare nella distanza fino alla fine del vettore O(N)
- Conoscere la dimensione – costante O(1)
- Ridimensionamento del vettore-Lineare O(N)
Tutte le funzioni membro di std::vettoriale
Di seguito è riportato l'elenco di tutte le funzioni membro della classe std::vettoriale in C++:
Funzione vettoriale
Descrizione
Aggiunge un elemento alla fine del vettore. Rimuove l'ultimo elemento del vettore. Restituisce il numero di elementi nel vettore. dimensione_massima()
Restituisce il numero massimo di elementi che il vettore può contenere. ridimensionare()
Modifica la dimensione del vettore. Controlla se il vettore è vuoto. operatore[]
Accede all'elemento in una posizione specifica. A()
Accede all'elemento in una posizione specifica, con controllo dei limiti. davanti()
Accede al primo elemento del vettore. Indietro()
Accede all'ultimo elemento del vettore. inizio()
Restituisce un iteratore che punta al primo elemento del vettore. FINE()
Restituisce un iteratore che punta all'elemento oltre la fine del vettore. rbegin()
Restituisce un iteratore inverso che punta all'ultimo elemento del vettore. rendere()
Restituisce un iteratore inverso che punta all'elemento che precede il primo elemento del vettore. cbegin
Restituisce const_iterator all'inizio alcuni
Restituisce const_iterator alla fine crbegin
Restituisce const_reverse_iterator per invertire l'inizio credere
Restituisce const_reverse_iterator all'estremità inversa Inserisce gli elementi in una posizione specifica nel vettore. Rimuove gli elementi da una posizione o intervallo specifico nel vettore. scambio()
Scambia il contenuto del vettore con quello di un altro vettore. Rimuove tutti gli elementi dal vettore. posizionare()
Costruisce e inserisce un elemento nel vettore. posto_indietro()
Costruisce e inserisce un elemento alla fine del vettore. assegnare()
cos'è il clustering
Assegna nuovi valori agli elementi vettoriali sostituendo quelli vecchi. capacità()
Restituisce la dimensione dello spazio di archiviazione attualmente allocato al vettore. Riserva()
Richiede che la capacità del vettore sia almeno sufficiente a contenere un numero specificato di elementi. rimpicciolirsi per starci dentro()
Riduce l'utilizzo della memoria liberando spazio inutilizzato. get_allocatore
Restituisce una copia dell'oggetto allocatore associato al vettore. Devi leggere:
- Come verificare se un vettore contiene un determinato elemento in C++?
- Come trovare l'indice di un dato elemento in un vettore in C++
- Ordinamento di un vettore in C++