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:
val prima della posizione loc ritornando un iteratore all'elemento inseritonum copie di val prima di locstart e end prima della posizione locSi 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