2011-10-16 82 views
-1

我的编译器抱怨。从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; 

} 

当我称之为擦除时有什么问题?

+0

请发布您正在尝试的确切代码。 – curiousguy

回答

4

vecvector<string> s的数组。我相信你的意思vec[0].begin()像这样:

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

后您删除的第一要素,只有一个左。这一个元素在位置0,这意味着索引1是越界 - >未定义的行为。

+0

向量上的未定义行为,超出范围的异常。 –

+3

@Kernald:超出范围只会抛出'.at(1)'。 – jpalecek

相关问题