2011-10-16 7 views
-1

Mon compilateur se plaint.Supprimer l'élément de std :: vector <std::string>>

#include <iostream> 
#include <vector> 
using namespace std; 

int main(){ 

     vector<string> vec[2]; 
     vec[0].push_back("test1"); 
     vec[0].push_back("test2"); 

     cout << vec[0][0] << endl; 
     vec[0].erase(vec.begin()); 
     cout << vec[0][1] << endl; 

} 

Qu'est-ce qui ne va pas lorsque j'appelle l'effacement?

+0

Veuillez poster le code exact que vous essayez. – curiousguy

Répondre

4

vec est un tableau de vector<string> s. Je crois que vous vouliez dire vec[0].begin() comme ceci:

vec[0].erase(vec[0].begin()); 
0
vec[0].erase(vec[0].begin()); 
    cout << vec[0][1] << endl; 

Après avoir effacé le premier élément, il n'y a qu'une seule gauche. Cet élément est à la position 0, ce qui signifie que l'index 1 est hors limites -> comportement indéfini.

+0

Comportement non défini sur les vecteurs, exception hors plage. –

+3

@Kernald: hors de portée serait lancé sur '.at (1)' seulement. – jpalecek

Questions connexes