从std :: vector <std :: string>&gt; </std :: string>中删除元素

时间:2011-10-16 11:37:54

标签: c++ linux vector

我的编译器抱怨。

#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;

}

我打电话给擦除有什么问题?

2 个答案:

答案 0 :(得分:4)

vec是一个vector<string>的数组。我相信你的意思是vec[0].begin()

vec[0].erase(vec[0].begin());

答案 1 :(得分:0)

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

擦除第一个元素后,只剩下一个元素。这一个元素位于0位置,这意味着索引1是偏离边界 - &gt;未定义的行为。