Come si espande un vettore in C++?

Come si espande un vettore in C++?
Se "espandere" qui significa includere più elementi nel vettore in modo che la sua dimensione (lunghezza) aumenti, allora un vettore può essere ampliato. Tuttavia, "espandere un vettore" non è una frase classica in C++. In effetti, "espandere" in C ++ in realtà significa, sostituire il nome di un oggetto con i valori del suo contenuto.Se un vettore è costituito da letterali di stringa, allora il vettore può essere sostituito da una stringa costituita dai letterali delle stringhe. Tuttavia, questo deve essere fatto manualmente. Cioè, deve essere fatto dal programmatore e non da una libreria.

Nonostante, questo post spiegherà come sostituire un vettore di letterali a stringa, con una serie di letterali. Questo post spiegherà anche i diversi modi in cui il vettore C ++ può essere aumentato di lunghezza. La lunghezza di un vettore in C ++ è chiamata dimensione.

Il vettore ha funzioni dei membri. Le sue dimensioni possono essere aumentate utilizzando le funzioni del membro: Ridimeni (), Insert (), EMPlace () e Push_back (). Questo articolo spiega i diversi modi in cui il vettore può essere ampliato, cioè di dimensioni aumentate; e nel caso del vettore dei letterali di stringa, sostituiti da tutti i letterali delle stringhe.

La codifica vettoriale all'interno del corpo funzione principale (), a meno che non vi sia una buona ragione per farlo prima del corpo di funzione principale (). Non dimenticare di iniziare il programma con:

#includere
#includere
Utilizzo dello spazio dei nomi std;

Contenuto dell'articolo

  • Vettore di stringhe, a una stringa
  • Aumentare le dimensioni del vettore
  • Ridimensionamento
  • Inserimento
  • EMPIPACHI
  • Respingere
  • Conoscere la lunghezza di un vettore
  • Capacità di un vettore
  • Reservi lo spazio per il vettore
  • Conclusione

Vettore di stringhe a una stringa

Un vettore di letterali a stringa può essere sostituito da una stringa di letterali. I letterali saranno separati dalle virgole nell'unica stringa. Il seguente codice illustra questo:

vectorvtr = "Toyota", "Mitsubishi", "Ford", "Mercedes", "Jeep";
Char archars [100];
int ctr = 0; //contatore
int i = 0;
per (i = 0; iconst char* str = vtr [i];
int j = 0;
per (j = 0; str [j] != '\ 0'; j ++)
arrchars [ctr] = str [j];
++CTR;

arrchars [ctr] = ','; ++ ctr; arrchars [ctr] = ";
++CTR;

arrchars [ctr] = '\ 0';
cout<L'output è:

Toyota, Mitsubishi, Ford, Mercedes, Jeep,

che è una corda lunga. Una stringa di array e una stringa letterale in doppie citazioni, sono fondamentalmente la stessa cosa, che terminano in '\ 0'; Sebbene il finale per la stringa a doppia citazione letterale sia implicito. L'ultima stringa lunga ha solo una '\ 0' alla fine della sequenza dei caratteri. Il codice può ancora essere modificato per rimuovere l'ultima virgola e spazio.

Aumentare le dimensioni del vettore

Ridimensionamento

La funzione membro size () può essere utilizzata per restituire la dimensione () di un vettore come mostra il seguente codice:

vectorvtr 'f', 'g', 'h', 'i', 'j';
cout<L'output è 5.

void Riassie (size_type sz)

Per aumentare le dimensioni di un vettore, il vettore dovrebbe essere ridimensionato in un numero maggiore. Il seguente codice lo fa usando la funzione membro, Ridimension (size_type sz):

vectorvtr 'f', 'g', 'h', 'i', 'j';
VTR.ridimensionare (7);
VTR [5] = 'K';
VTR [6] = 'l';
per (int i = 0; icout<
cout<L'output è:

F g h i j k l

Quando un vettore viene appena ridimensionato con la funzione membro Ridimensize (), sono disponibili nuove posizioni vuote verso la fine del vettore. Queste nuove posizioni possono quindi essere riempite.

void Riassie (size_type sz, const T&C)

Lo stesso valore può essere aggiunto alle nuove posizioni verso la fine del vettore usando questo metodo sovraccarico di ridimensionamento (). Illustrazione:

vectorvtr 'f', 'g', 'h', 'i', 'j';
VTR.ridimensionare (8, 'z');
per (int i = 0; icout<
cout<L'output è:

F g h i j z z z

Inserimento

L'inserimento avviene davanti all'elemento puntato dall'iteratore.

INSERT (POSIZIONE COST_ITERATOR, CONST T & X)

Il seguente codice mostra come viene utilizzata questa funzione:

vectorvtr 'f', 'g', 'h', 'i', 'j';
Vector :: iterator P = VTR.inizio();
P ++, P ++;
char id = 'z';
VTR.inserire (p, id);
per (int i = 0; icout<
cout<L'output è:

F g z h i j

'Z' è stato inserito di fronte a H. La funzione membro Begin () restituisce un iteratore che indica il primo elemento del vettore. L'iteratore può quindi essere incrementato nella posizione desiderata. Si noti che il secondo argomento previsto per insert () qui è un identificatore.

Iteratore Insert (COST_Iterator Posizione, T && X)

Il seguente codice mostra come viene utilizzata questa funzione:

vectorvtr 'f', 'g', 'h', 'i', 'j';
Vector :: iterator P = VTR.inizio();
P ++, P ++;
VTR.inserire (p, 'z');
per (int i = 0; icout<
cout<L'output è:

F g z h i j

'Z' è stato inserito di fronte a H. La funzione membro Begin () restituisce un iteratore che indica il primo elemento del vettore. Si noti che il secondo argomento previsto per insert () qui è un letterale.

Iteratore Insert (Posizione const_iterator, size_type n, const t & x)

Lo stesso valore può essere inserito più di una volta. Il seguente codice illustra questo:

vectorvtr 'f', 'g', 'h', 'i', 'j';
Vector :: iterator P = VTR.inizio();
P ++, P ++;
char id = 'z';
VTR.inserire (p, 3, id);
per (int i = 0; icout<
cout<L'output è:

F g z z z h i j

ITERATOR INSERT (POSIZIONE COST_ITERATOR, prima inputterator, inputterator)

È possibile inserire un intervallo da un altro vettore. Il seguente codice illustra questo:

vettoriale Altrovtr = 'k', 'l', 'm', 'n', 'o';
Vector :: iterator i = Othervtr.inizio();
i = i + 1;
Vector :: iterator J = Othervtr.FINE();
j = j - 2;
vectorvtr 'f', 'g', 'h', 'i', 'j';
Vector :: iterator P = VTR.inizio();
P ++, P ++;
VTR.inserire (p, i, j);
per (int i = 0; icout<
cout<L'output è:

F g l m h i j

Per l'altro vettore, l'intervallo è ottenuto come segue: La funzione membro Begin () restituisce un iteratore che indica il suo primo elemento. Questo iteratore, sono stato incrementato per indicare l'elemento successivo. La funzione membro end () restituisce un iteratore che punta subito dopo l'ultimo elemento. Questo iteratore, J è stato decrementato due volte sottraendo 2 da esso, e poi ha indicato l'elemento, 'n'.

A questo punto, la gamma immaginata è:

'L', 'm', 'n'

Tuttavia, con C ++, l'ultimo elemento in un intervallo non sarà coinvolto (inserito). Quindi, viene inserito solo "'l', 'm'".

ITERATOR INSERT (POSIZIONE COST_ITERATOR, Initializer_List I l)

È possibile inserire un elenco letterale vettoriale. Il seguente codice illustra questo:

vectorvtr 'f', 'g', 'h', 'i', 'j';
Vector :: iterator P = VTR.inizio();
P ++, P ++;
VTR.insert (p, 'k', 'l', 'm', 'n', 'o');
per (int i = 0; icout<
cout<L'output è:

F g k l m n o h i j

EMPIPACHI

L'uso di eMplace () è simile all'uso di insert () e molti programmatori preferiscono inserire ().

EMPLIOT INTRO

Per il seguente codice, "Z" è collocato all'interno dei valori, "f", "g", "h", "i", "j":

vectorvtr 'f', 'g', 'h', 'i', 'j';
Vector :: iterator P = VTR.inizio();
P ++, P ++;
VTR.EMPLETTH (P, 'Z');
per (int i = 0; icout<
cout<L'output è:

EMPIPACHI davanti

Per il seguente codice, "Z" è collocato davanti ai valori, "f", "g", "h", "i", "j":

vectorvtr 'f', 'g', 'h', 'i', 'j';
Vector :: iterator P = VTR.inizio();
VTR.EMPLETTH (P, 'Z');
per (int i = 0; icout<
cout<L'iteratore restituito da Begin () non è stato incrementato; E così l'output è:

Z f g h i j

Respingere

La funzione membro push_back () può essere utilizzata per aggiungere un elemento. Il seguente codice illustra questo:

vectorvtr 'f', 'g', 'h', 'i', 'j';
VTR.push_back ('z');
per (int i = 0; icout<
cout<L'output è:

F g h i j z

Un elemento può anche essere aggiunto utilizzando la funzione membro EMEMPLET_BACK (). Il seguente codice illustra questo:

vectorvtr 'f', 'g', 'h', 'i', 'j';
VTR.emplace_back ('z');
per (int i = 0; icout<
cout<L'output è:

F g h i j z

Conoscere la lunghezza di un vettore

La dimensione di un vettore significa il numero di elementi nel vettore. Questo può essere ottenuto utilizzando la funzione membro size (). Il seguente programma illustra questo:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

vectorvtr = 'f', 'g', 'h', 'i', 'j', 'k';
int sz = vtr.misurare();
cout<restituzione 0;

L'output è 6.

Capacità di un vettore

La capacità di un vettore non deve essere confusa con le dimensioni del vettore. Quando un vettore viene manipolato e aumentato, le posizioni dei suoi elementi nella memoria del computer vengono modificate (riallocata). La capacità di un vettore è il numero totale di elementi che il vettore può contenere senza richiedere riallocazione. Difende con la dimensione iniziale del vettore. Il seguente programma lo illustra per un vettore vuoto e per un vettore di 5 elementi:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

vettoriale VTR1;
vector vtr2 'f', 'g', 'h', 'i', 'j';
int cap1 = vtr1.capacità();
int cap2 = vtr2.capacità();
cout<< cap1 <cout<< cap2 <restituzione 0;

L'output è:

0
5

Reservi lo spazio per il vettore

vuoto Riserva (size_type n)

Lo spazio vettoriale può essere riservato con questa funzione. Il seguente programma si riserva uno spazio di 5 elementi:

#includere
#includere
Utilizzo dello spazio dei nomi std;
int main ()

vectorvtr = 'f', 'g', 'h';
VTR.Riserva (5);
int cap = vtr.capacità();
cout<< "New Capacity: " << cap <VTR.push_back ('i');
VTR.push_back ('j');
VTR.push_back ('k');
per (int i = 0; icout<
cout<restituzione 0;

L'output è:

Nuova capacità: 5
F g h i j k

Gli spazi riservati includono quelli per gli elementi iniziali. Il fatto che 5 spazi fossero riservati, non significa che un elemento non possa essere aggiunto oltre 5 elementi.

Conclusione

"Espandere un vettore" non è una frase classica in C++. Tuttavia, se "espandere un vettore" significa, aumentando la lunghezza di un vettore, allora sì, un vettore può essere ampliato. In C ++ la lunghezza di un vettore o di qualsiasi contenitore C ++, è chiamata dimensione. Il vettore può essere ampliato con le seguenti funzioni del membro: ridimension (), insert (), emplace () e push_back (). Altre funzioni dei membri correlate sono: dimensione (), capacità () e riserva (). In molti programmi C ++, un vettore sarebbe aumentato e diminuirà diverse volte. Un vettore può essere ridotto, usando la funzione del membro della cancellazione - vedi più avanti. Se un vettore è costituito da letterali di stringa, allora il vettore può essere sostituito da una lunga corda costituita dai letterali delle stringhe.