Qual è la differenza tra un vettore e un array in c++?

Qual è la differenza tra un vettore e un array in c++?
Ci sono molte differenze tra un vettore e un array in C++. Tuttavia, le somiglianze principali sono molto importanti. Le somiglianze principali sono che sono entrambi un elenco e ognuno avrebbe una sequenza di dati dello stesso tipo. Le differenze principali sono le seguenti: la dimensione di un vettore (lunghezza) può essere aumentata naturalmente, ma quella di un array è fissa e non può essere aumentata. Gli elementi possono essere inseriti all'interno di un vettore ma non possono essere inseriti all'interno di un array. Gli elementi possono essere aggiunti alla fine del vettore ma non possono essere aggiunti alla fine dell'array. Il vettore è una classe da cui vengono istanziati altri oggetti vettoriali, ma l'array è un puntatore costante a una sequenza di dati dello stesso tipo. Il vettore ha metodi (funzioni del membro), ma l'array no, e quindi il vettore è chiamato struttura dei dati. Mentre il puntatore può essere utilizzato con l'array, gli iteratori vengono utilizzati con il vettore. Un iteratore è un puntatore elaborato.

Nessun elemento può essere incluso davanti all'array. Con C ++ 17 e superiore, un elemento può essere incluso davanti al vettore usando la funzione membro EMPlace ().

Per il resto di questo articolo, sono illustrate le differenze tra il vettore e l'array. Per ogni punto, viene menzionata l'incapacità dell'array, o il suo modo smusso o ingombrante di raggiungere lo stesso obiettivo viene dato.

Contenuto dell'articolo

  • Creazione di un vettore o un array
  • Dimensioni crescenti
  • Inserimento
  • Aggiunta
  • Cancellare un elemento
  • Chiaro
  • Scambiarsi
  • Misurare
  • Conclusione

Creazione di un vettore o un array

Un vettore può essere creato in diversi modi. Il modo base è il seguente:

vettore vtr = 'a', 'b', 'c', 'd', 'e';

Di conseguenza, un array verrebbe creato come segue:

char arr [] = 'a', 'b', 'c', 'd', 'e';

Nota la differenza negli operandi che si trovano a sinistra dell'operatore di assegnazione. Il numero di elementi per il vettore può quindi essere aggiunto o ridotto, ma la dimensione dell'array rimane fissa, a 5 in questo caso.

Per avere e utilizzare un vettore in un programma, il programma dovrebbe iniziare con:

#includere
Utilizzo dello spazio dei nomi std;

Per avere e utilizzare un array in un programma, non è necessaria alcuna direttiva preprocessore.

Dimensioni crescenti

Il seguente codice mostra come un vettore di inizialmente due elementi, viene aumentato a quattro elementi, usando la sua funzione membro push_back ():

vettore VTR (2);
vtr [0] = 'a';
VTR [1] = 'B';
VTR.push_back ('c');
VTR.push_back ('d');

Questo codice dovrebbe essere in un corpo di funzione. Per l'array e poiché l'array ha una dimensione fissa, crea un array per il numero massimo di elementi previsti, prima di aggiungere gli elementi usando l'operatore []. Esempio:

char arr [4];
arr [0] = 'a';
arr [1] = 'b';
// Aggiunta di elementi
arr [2] = 'c';
arr [3] = 'd';

Inoltre, questo codice dovrebbe essere all'interno di un corpo di funzione.

Inserimento

Nel seguente codice, un elemento viene inserito davanti all'elemento puntato dall'iteratore, p:

vectorvtr = 'a', 'b', 'd', 'e';
Vector :: iterator P = VTR.inizio();
++P;
++P;
char ch = 'c';
VTR.inserire (p, ch);
per (int i = 0; icout<

L'output è:

A b c d e

La prima dichiarazione del codice crea l'oggetto vettoriale. "C", che avrebbe dovuto essere di fronte a "d" per ordine alfabetico, è assente qui. La seconda affermazione restituisce un iteratore che indica il primo elemento del vettore. Le due dichiarazioni successive aumentano il puntatore per indicare "D". L'istruzione dopo l'assegnazione di 'C' a CH. In quel segmento di codice, l'ultima istruzione inserisce "C" di fronte a "D", usando l'iteratore.

Per quanto riguarda l'array, non è possibile inserire un elemento. A causa di limitazioni come questa per l'array, il vettore e altri contenitori sono stati progettati.

Nota: la funzione membro insert () può anche essere utilizzata per inserire un elemento di fronte a un vettore.

Aggiunta

Apprendendo significa aggiungere elementi sul retro. La funzione membro push_back () può essere utilizzata per aggiungere elementi sul retro del vettore - vedi sopra. L'array non può essere aggiunto a. L'unico modo per aggirare questo problema per l'array è creare un array per la dimensione massima prevista. Metti gli elementi dall'inizio. Quindi alcuni spazio (celle) verranno lasciati indietro nell'array. Quindi se è necessario aggiungere elementi sul retro, adattarsi agli elementi (valori) negli spazi dietro che sono vuoti (che hanno valori predefiniti).

Cancellare un elemento

Per il vettore, un elemento può essere cancellato usando l'iteratore. L'iteratore indicherà quindi l'elemento successivo, che era lì prima della cancellazione. Il seguente codice cancella 'B':

vectorvtr = 'a', 'b', 'c', 'd', 'e';
Vector :: iteratore Q = VTR.inizio();
++Q;
VTR.cancella (q);
per (int i = 0; icout<
cout<cout<< *q <L'output è:

A c d e
C

Nessun elemento dell'array può essere cancellato, anche se può essere modificato.

Chiaro

Tutti gli elementi del vettore possono essere rimossi, con la sua funzione membro Clear (), come segue:

vectorvtr = 'a', 'b', 'c', 'd', 'e';
VTR.chiaro();
per (int i = 0; icout<

L'output non è niente. La cosa migliore da fare con l'array è sostituire tutti gli elementi con un valore predefinito. Con l'intero, il valore predefinito è 0. Il seguente codice illustra:

int arr [] = 1, 2, 3, 4, 5;
per (int i = 0; i<5; i++)
arr [i] = 0;

per (int i = 0; i<5; i++)
cout<

L'output è:

0 0 0 0 0

Con il carattere, il valore predefinito è il carattere NUL, \ 0. Il seguente codice illustra:

char arr [] = 'a', 'b', 'c', 'd', 'e';
per (int i = 0; i<5; i++)
arr [i] = '\ 0';

per (int i = 0; i<5; i++)
cout<

L'output non mostra nulla.

Scambiarsi

Anche se due vettori non hanno le stesse dimensioni, i loro elementi possono essere scambiati, con la funzione Swap () Member. Il seguente codice mostra questo:

vector vtr1 = 'a', 'b', 'c', 'd', 'e';
vector vtr2 = 'f', 'g', 'h';
VTR1.swap (vtr2);
cout<< "Content of new vtr1:" <per (int i = 0; icout<< vtr1[i] << ";

cout<cout<< "Content of new vtr:" <per (int i = 0; icout<< vtr2[i] << ";

Per scambiare due array, devono essere della stessa lunghezza. L'array non ha funzioni membri (nessun metodo). Quindi, per scambiare elementi con array, un codice dovrebbe essere scritto come segue:

char arr1 [] = 'a', 'b', 'c', 'd', 'e';
char arr2 [] = 'f', 'g', 'h', 'i', 'j';
per (int i = 0; i<5; i++)
char temp = arr1 [i];
arr1 [i] = arr2 [i];
arr2 [i] = temp;

cout<< "Content of new arr1:" <per (int i = 0; i<5; i++)
cout<< arr1[i] << ";

cout<cout<< "Content of new arr2:" <per (int i = 0; i<5; i++)
cout<< arr2[i] << ";

L'output è:

Contenuto del nuovo ARR1:
F g h i j
Contenuto del nuovo ARR2:
A b c d e

Misurare

La dimensione del vettore viene restituita dalla funzione del suo membro, dimensione (). Cioè, è determinato in fase di esecuzione. Illustrazione:

vectorvtr = 'a', 'b', 'c', 'd';
int sz = vtr.misurare();
cout<L'output è 4. Le dimensioni dell'array devono essere indicate all'inizio, come mostra il seguente codice:

char arr [4] = 'a', 'b', 'c', 'd';

Può anche essere fatto così:

char arr [7] = 'a', 'b', 'c', 'd';

Cioè, mettere un numero (dimensione) che è superiore alla dimensione presunta (di 4 in questo caso). Tuttavia, il numero non dovrebbe essere inferiore al numero di elementi iniziali.

Array di lunghezza variabile

La dimensione dell'array può, tuttavia, essere data (non determinata) a tempo di esecuzione. In questo caso, l'array dovrà essere creato in una funzione o in un costrutto simile. Il seguente programma illustra questo:

#includere
#includere
Utilizzo dello spazio dei nomi std;
void fn (int n)
char arr [n];
arr [0] = 'a';
arr [1] = 'b';
arr [2] = 'c';
arr [3] = 'd';
per (int i = 0; icout<
cout<
int main ()

fn (4);
restituzione 0;

L'output è:

A b c d

Conclusione

Le principali differenze tra il vettore e l'array sono le seguenti: la dimensione (lunghezza) di un vettore può essere aumentata naturalmente, ma quella di un array è fissa e non può essere aumentata. Gli elementi possono essere inseriti all'interno di un vettore ma non possono essere inseriti all'interno di un array. Gli elementi possono essere aggiunti alla fine del vettore ma non possono essere aggiunti alla fine dell'array. Il vettore è una classe da cui vengono istanziati altri oggetti vettoriali, ma l'array è un puntatore costante a una sequenza di dati dello stesso tipo. Il vettore ha metodi (funzioni del membro), ma l'array no, e quindi il vettore è chiamato struttura dei dati. Mentre il puntatore può essere utilizzato con l'array, gli iteratori vengono utilizzati con il vettore. Un iteratore è un puntatore elaborato. L'array mostra la sua incapacità o ha un modo schietto o ingombrante di raggiungere lo stesso obiettivo per ogni differenza.