insert
Sintassi:
#include <vector> iterator insert( iterator loc, const T& val ); void insert( iterator loc, size_type num, const T& val ); void insert( iterator loc, input_iterator start, input_iterator end );
Il metodo insert() ha 3 diverse forme:
- inserisce l'oggetto val prima della posizione loc ritornando un iteratore all'elemento inserito
- inserisce num copie di val prima di loc
- inserisce elementi nell'intervallo tra start e end prima della posizione loc
Si noti che l'inserimento di elementi in un vettore può essere relativamente dispendioso in tempo, dato che la struttura base del vettore rimane un array. Per inserire dati in un array potrebbe essere necessario spostare molti elementi per far posto a quelli in inserimento e questo può avvenire a tempo lineare. Se state pensando di usare intensamente insert() e la velocità di esecuzione è un aspetto importante della vostra applicazione allora è meglio usare contenitori basati su linked list come le list o le deque.
Nell'esempio seguente il codice usa la funzione insert() per aggiungere 4 copie del caratter 'C' ad un vettore di caratteri
// Create a vector, load it with the first 10 characters of the alphabet vector<char> alphaVector; for( int i=0; i < 10; i++ ) { alphaVector.push_back( i + 'A' ); } // Insert four C's into the vector vector<char>::iterator theIterator = alphaVector.begin(); alphaVector.insert( theIterator, 4, 'C' ); // Display the vector for( theIterator = alphaVector.begin(); theIterator != alphaVector.end(); ++theIterator ) { cout << *theIterator; }
This code would display:
CCCCABCDEFGHIJ
Ecco un altro esempio del metodo insert(). In questo codice insert è usato per appendere i contenuti di un vettore alla fine di un altro.
vector<int> v1; v1.push_back( 0 ); v1.push_back( 1 ); v1.push_back( 2 ); v1.push_back( 3 ); vector<int> v2; v2.push_back( 5 ); v2.push_back( 6 ); v2.push_back( 7 ); v2.push_back( 8 ); cout << "Before, v2 is: "; for( int i = 0; i < v2.size(); i++ ) { cout << v2[i] << " "; } cout << endl; v2.insert( v2.end(), v1.begin(), v1.end() ); cout << "After, v2 is: "; for( int i = 0; i < v2.size(); i++ ) { cout << v2[i] << " "; } cout << endl;
Quando gira produce questo output
Before, v2 is: 5 6 7 8
After, v2 is: 5 6 7 8 0 1 2 3