Vettore dentro C++ Libreria di modelli standard (STL) con esempio

โšก Riepilogo intelligente

Vettore dentro C++ รจ un array dinamico della Standard Template Library che si ridimensiona automaticamente man mano che vengono aggiunti o rimossi elementi, memorizzando gli elementi in memoria contigua in modo che i programmatori possano accedervi e attraversarli utilizzando gli iteratori.

  • ๐Ÿ“ฆ Matrice dinamica: A C++ Un vettore si espande o si contrae automaticamente, a differenza di un array statico a dimensione fissa.
  • ๐Ÿงฉ Intestazione e sintassi: Includi l'intestazione del vettore, quindi dichiara il vettore nome per memorizzare gli elementi tipizzati.
  • ๐Ÿงญ Iteratori: Le funzioni begin(), end(), cbegin() e cend() si muovono tra gli elementi del vettore come puntatori.
  • ๏ธ modificatori: Le funzioni push_back(), insert(), pop_back(), erase() e clear() modificano il contenuto del vettore.
  • ๐Ÿ“ Capacitร : Le funzioni size(), capacity(), max_size(), resize() e empty() segnalano o regolano lo spazio di archiviazione.
  • ๐Ÿค– Assistenza AI: GitHub Copilot e assistenti IA simili generano automaticamente operazioni vettoriali a partire da un breve commento.

C++ Vettoriale STL

Che cos'รจ un C++ Vettore?

A C++ Vector รจ un array dinamico in grado di ridimensionarsi automaticamente. Il ridimensionamento avviene dopo che un elemento รจ stato aggiunto o eliminato dal vettore. L'archiviazione รจ gestita automaticamente dal contenitore. Gli elementi di un vettore sono archiviati in un archivio contiguo. Ciรฒ consente C++ programmatori di accedere e attraversare gli elementi vettoriali utilizzando iteratori.

L'inserimento di nuovi dati in un vettore avviene alla sua fine. Questa operazione richiede un tempo differenziale. La rimozione di un elemento da un vettore richiede un tempo costante. Il motivo รจ che non รจ necessario ridimensionare il vettore. L'inserimento o la cancellazione di un elemento all'inizio del vettore richiede un tempo lineare.

Prima di scrivere codice con i vettori, รจ utile sapere quando rappresentano il contenitore piรน appropriato.

Quando utilizzare un vettore?

A C++ il vettore dovrebbe essere utilizzato nelle seguenti circostanze:

  • Quando si ha a che fare con elementi di dati che cambiano costantemente.
  • Se la dimensione dei dati non รจ nota prima di iniziare, il vettore non richiederร  di impostare la dimensione massima del contenitore.

Come inizializzare i vettori in C++

La sintassi dei vettori in C++ รจ:

vector <data-type> name (items)

Come mostrato sopra, iniziamo con la parola chiave vector.

  • Migliori tipo di dati รจ il tipo di dati degli elementi da memorizzare nel vettore.
  • Migliori Nome รจ il nome del vettore o degli elementi dati.
  • Migliori elementi indica il numero di elementi per i dati vettoriali. Questo parametro รจ facoltativo.

Una volta creato un vettore, gli iteratori offrono un modo simile a un puntatore per spostarsi tra i suoi elementi.

Iteratori

Lo scopo degli iteratori รจ quello di aiutarci ad accedere agli elementi memorizzati in un vettore. รˆ un oggetto che funziona come un puntatore. Ecco gli iteratori comuni supportati da C++ vettori:

  • vettore::inizio(): fornisce un iteratore che punta al primo elemento del vettore.
  • vettore::fine(): fornisce un iteratore che punta all'elemento oltre la fine del vettore.
  • vettore::cbegin(): รˆ equivalente a vector::begin(), ma non ha la capacitร  di modificare gli elementi.
  • vettore::cend(): รˆ equivalente a vector::end() ma non puรฒ modificare gli elementi del vettore.

L'esempio seguente popola un vettore e poi lo attraversa utilizzando iteratori sia mutabili che costanti.

esempio 1

#include <iostream> 
#include <vector> 

using namespace std;
int main()
{
	vector<int> nums;

	for (int a = 1; a <= 5; a++)

		nums.push_back(a);

	cout << "Output from begin and end: ";

	for (auto a = nums.begin(); a != nums.end(); ++a)

		cout << *a << " ";

	cout << "\nOutput from cbegin and cend: ";

	for (auto a = nums.cbegin(); a != nums.cend(); ++a)

		cout << *a << " ";

	return 0;
}

Produzione:

C++ iteratori vettoriali Esempio 1 output

Ecco uno screenshot del codice:

C++ iteratori vettoriali Esempio 1 codice

Code Spiegazione:

  1. Includi il file di intestazione iostream nel nostro codice. Ci permetterร  di leggere e scrivere sulla console.
  2. Includi il file di intestazione vettoriale nel nostro codice. Ci permetterร  di lavorare con i vettori in C++.
  3. Includere lo spazio dei nomi std in modo da utilizzare le sue classi e funzioni senza chiamarlo.
  4. Chiama la funzione main() all'interno della quale va aggiunta la logica del programma.
  5. Il { segna l'inizio del corpo della funzione main().
  6. Dichiara un vettore denominato nums per memorizzare un insieme di numeri interi.
  7. Creiamo un ciclo for per iterare sul vettore. La variabile ci aiuterร  a iterare sugli elementi del vettore, dal primo al quinto.
  8. Spingi gli elementi nel numero del vettore dal retro. Per ogni iterazione, verrร  aggiunto il valore corrente della variabile a al vettore, che รจ compreso tra 1 e 5.
  9. Stampa del testo sulla console.
  10. Utilizzare una variabile iteratore a per scorrere gli elementi del vettore num dall'inizio all'elemento oltre la fine. Nota che stiamo utilizzando gli iteratori vector::begin() e vector::end().
  11. Stampa i valori a cui punta la variabile iteratore a sulla console per ogni iterazione.
  12. Stampa del testo sulla console. \n รจ un carattere di nuova riga, che sposta il cursore sulla nuova riga per stampare da lรฌ.
  13. Utilizziamo una variabile iteratore per scorrere gli elementi del vettore nums dall'inizio fino all'elemento successivo alla fine. Nota che stiamo usando gli iteratori vector::cbegin() e vector::cend().
  14. Stampa i valori a cui punta la variabile iteratore a sulla console per ogni iterazione.
  15. La funzione principale dovrebbe restituire un valore se il programma viene eseguito correttamente.
  16. Fine del corpo della funzione main().

modificatori

I modificatori vengono utilizzati per modificare il significato del tipo di dati specificato. Ecco i modificatori comuni in C++:

  • vettore::push_back(): Questo modificatore spinge gli elementi da dietro.
  • vettore::inserisci(): Per inserire nuovi elementi in un vettore in una posizione specificata.
  • vettore::pop_back(): Questo modificatore rimuove gli elementi vettoriali dal retro.
  • vettore::cancella(): Viene utilizzato per rimuovere una serie di elementi dalla posizione specificata.
  • vettore::clear(): Rimuove tutti gli elementi vettoriali.

L'esempio seguente applica questi modificatori in sequenza per vedere come cambia un vettore.

esempio 2

#include <iostream>
#include <vector> 

using namespace std;
int main()
{
	vector<int> nums;
	
	nums.assign(5, 1);

	cout << "Vector contents: ";
	for (int a = 0; a < nums.size(); a++)
		cout << nums[a] << " ";

	nums.push_back(2);
	int n = nums.size();
	cout << "\nLast element: " << nums[n - 1];

	nums.pop_back();

	cout << "\nVector contents: ";
	for (int a = 0; a < nums.size(); a++)
		cout << nums[a] << " ";

	nums.insert(nums.begin(), 7);

	cout << "\nFirst element: " << nums[0];
	
	nums.clear();
	cout << "\nSize after clear(): " << nums.size();			
}

Produzione:

C++ Esempio di output dei modificatori vettoriali 2

Ecco uno screenshot del codice:

C++ Modificatori vettoriali Esempio 2 codice

Code Spiegazione:

  1. Includi il file di intestazione iostream nel nostro codice per utilizzare le sue funzioni.
  2. Includi il file di intestazione vettoriale nel nostro codice per utilizzare le sue funzioni.
  3. Includere lo spazio dei nomi std per utilizzare le sue classi senza chiamarlo.
  4. Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta all'interno del suo corpo.
  5. L'inizio del corpo della funzione main().
  6. Dichiara un vettore denominato nums per memorizzare alcuni valori interi.
  7. Memorizza 5 elementi nel vettore num. Ciascuno con un valore di 1.
  8. Stampa del testo sulla console.
  9. Utilizzare una variabile iteratore a per scorrere gli elementi del vettore nums.
  10. Stampa i valori dei numeri vettoriali sulla console per ogni iterazione.
  11. Aggiungi il valore 2 alla fine del vettore num.
  12. Dichiara una variabile intera n per memorizzare la dimensione dei numeri del vettore.
  13. Stampa l'ultimo valore dei numeri vettoriali insieme ad altro testo. Dovrebbe restituire un 2.
  14. Rimuovi l'ultimo elemento dal vettore num. I 2 verranno rimossi.
  15. Stampa il testo sulla console. \n sposta il cursore sulla nuova riga per stampare il testo lรฌ.
  16. Utilizzare una variabile iteratore a per scorrere gli elementi del vettore nums.
  17. Stampa i valori dei numeri vettoriali sulla console per ogni iterazione.
  18. Inserisci il valore 7 all'inizio dei numeri del vettore.
  19. Stampa il primo valore dei numeri vettoriali insieme ad altro testo. Dovrebbe restituire 7.
  20. Elimina tutti gli elementi dai numeri del vettore.
  21. Stampa la dimensione del numero del vettore insieme ad altro testo dopo aver cancellato tutti i contenuti. Dovrebbe restituire 0.
  22. Fine del corpo della funzione main().

Ultra-Grande

Utilizza il seguente funzioni per determinare la capacitร  di un vettore:

  • Misurare() โ€“ Restituisce il numero di elementi in un vettore.
  • Dimensione_massima() โ€“ Restituisce il numero massimo di elementi che un vettore puรฒ memorizzare.
  • Capacitร () โ€“ Restituisce la quantitร  di spazio di archiviazione allocato a un vettore.
  • Ridimensiona() โ€“ Ridimensiona il contenitore per contenere n elementi. Se la dimensione corrente del vettore รจ maggiore di n, gli elementi in fondo al vettore verranno rimossi. Se la dimensione corrente del vettore รจ minore di n, gli elementi extra verranno aggiunti in fondo al vettore.
  • Vuoto() โ€“ restituisce true se il vettore รจ vuoto. Altrimenti, restituisce false.

Quest'ultimo esempio riporta e regola la memorizzazione di un vettore utilizzando le funzioni di capacitร  descritte in precedenza.

esempio 3

#include <iostream> 
#include <vector> 
using namespace std;
int main() {
	vector<int> vector1;
	for (int x = 1; x <= 10; x++)
		vector1.push_back(x);
	cout << "Vector size: " << vector1.size()<< endl;
	cout << "Vector capacity: " << vector1.capacity() << endl;
	cout << "Maximum size of vector: " << vector1.max_size()<< endl;
	vector1.resize(5);
	cout << "Vector size after resizing: " << vector1.size() << endl;
	if (vector1.empty() == false)
		cout << "Vector is not empty"<<endl;
	else
		cout << "Vector is empty"<<endl;
	return 0;
}

Produzione:

C++ capacitร  vettoriale Esempio 3 output

Ecco uno screenshot del codice:

C++ capacitร  vettoriale Esempio 3 codice

Code Spiegazione:

  1. Includi il file di intestazione iostream nel nostro codice per utilizzare la sua funzione.
  2. Includi il file di intestazione vettoriale nel nostro codice per utilizzare le sue funzioni.
  3. Includi lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
  4. Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta al corpo di questa funzione.
  5. Crea un vettore denominato vettore1 per memorizzare i numeri interi.
  6. Utilizza un ciclo for per creare la variabile x con valori da 1 a 10.
  7. Inserisci i valori della variabile x nel vettore.
  8. Stampa la dimensione del vettore insieme ad altro testo sulla console.
  9. Stampa la capacitร  del vettore insieme ad altro testo sulla console.
  10. Stampa il numero massimo di elementi che il vettore puรฒ contenere insieme ad altro testo sulla console.
  11. Ridimensiona il vettore per contenere solo 5 elementi.
  12. Stampa la nuova dimensione del vettore insieme ad altro testo.
  13. Controlla se il vettore non รจ vuoto.
  14. Stampa il testo sulla console se il vettore non รจ vuoto.
  15. Utilizzare un'istruzione else per indicare cosa fare se il vettore รจ vuoto.
  16. Testo da stampare sulla console se il vettore รจ vuoto.
  17. Il programma deve restituire valore in caso di completamento positivo.
  18. Fine del corpo della funzione main().

DOMANDE FREQUENTI

Un vettore รจ un array dinamico che si ridimensiona automaticamente e conosce la propria dimensione, mentre un array predefinito ha una lunghezza fissa impostata in fase di compilazione. I vettori gestiscono la memoria per te; gli array grezzi no.

Per un accesso diretto e veloce, si puรฒ utilizzare l'operatore di indice, ad esempio nums[0]. La funzione membro at(), come nums.at(0), svolge la stessa funzione ma genera un'eccezione out_of_range quando l'indice non รจ valido, rendendola piรน sicura.

Dichiarare un vettore i cui elementi sono a loro volta vettori, ad esempio vettore > griglia. รˆ possibile ridimensionarla tramite costruttori o push_back rows. Ogni vettore interno puรฒ crescere indipendentemente, offrendo una matrice flessibile e ridimensionabile.

Un vettore memorizza gli elementi in memoria contigua con accesso casuale veloce, mentre una `std::list` รจ una lista doppiamente concatenata con inserimento o cancellazione veloci in qualsiasi punto, ma senza indicizzazione diretta. La scelta dipende dal modello di accesso.

Includi l'intestazione dell'algoritmo e chiama std::sort con gli iteratori begin e end, come in sort(nums.begin(), nums.end()). L'ordinamento รจ crescente per impostazione predefinita; passa un comparatore personalizzato o superiore () per ordinare in ordine decrescente.

Sรฌ. Un vettore รจ un modello e puรฒ contenere qualsiasi tipo, incluse stringhe, classi personalizzate e persino altri vettori. Dichiara il tipo di elemento all'interno delle parentesi angolari, come vettore. o vettore .

Sรฌ. Gli assistenti di programmazione basati sull'IA trasformano un breve prompt o un commento in codice vettoriale funzionante, inclusi dichiarazioni, cicli push_back e iterazioni. รˆ sempre consigliabile rivedere i tipi, i limiti e la gestione della capacitร  suggeriti, poichรฉ l'IA potrebbe non cogliere i requisiti specifici del progetto.

Sรฌ. Le serrature scorrevoli portatili e i catenacci a superficie possono essere usati per mettere in sicurezza una porta a scomparsa dall'esterno. Alcuni kit con catena di sicurezza consentono anche il bloccaggio esterno con chiave o manopola girevole. Copilota GitHub Suggerisce dichiarazioni di vettori, chiamate a push_back e insert e cicli iteratori durante la digitazione. Gestisce bene il codice ripetitivo, anche se รจ comunque consigliabile verificare indici, ridimensionamento e logica prima della compilazione.

Riassumi questo post con: