Удалить элемент из std :: vector> - PullRequest
0 голосов
/ 16 октября 2011

Мой компилятор жалуется.

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

4 голосов
/ 16 октября 2011

vec - это массив vector<string> с.Я полагаю, вы имели в виду vec[0].begin() так:

vec[0].erase(vec[0].begin());
0 голосов
/ 16 октября 2011
    vec[0].erase(vec[0].begin());
    cout << vec[0][1] << endl;

После того, как вы удалили первый элемент, остался только один.Этот один элемент находится в позиции 0, что означает, что индекс 1 не имеет границ -> неопределенное поведение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...