Мой компилятор жалуется.
#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; }
Что не так, когда я вызываю стирание?
vec - это массив vector<string> с.Я полагаю, вы имели в виду vec[0].begin() так:
vec
vector<string>
vec[0].begin()
vec[0].erase(vec[0].begin());
vec[0].erase(vec[0].begin()); cout << vec[0][1] << endl;
После того, как вы удалили первый элемент, остался только один.Этот один элемент находится в позиции 0, что означает, что индекс 1 не имеет границ -> неопределенное поведение.