Разве они не одинаковы? Проблема с вызовом векторного элемента - PullRequest
0 голосов
/ 10 апреля 2020
vector< vector<int> > vec_c(3);

//Code #1
for(int i = 0; i < vec_c.size(); i++){
   for(int j = 0; j < vec_c[i].size(); j++){
      cout << vec_c[i][j] << " ";
   }
   cout << endl;
}

//Code #2
cout << "It is here" << vec_c[0][0] << endl;

Итак, первая часть моего кода работает гладко и без проблем выводит вектор, однако, когда я пытаюсь вызвать элемент в векторе отдельно, он показывает «Ошибка сегментации». Я не уверен почему, потому что в основном оба они делают то же самое.

1 Ответ

4 голосов
/ 10 апреля 2020

vec_c[0] возвращает пустое значение std::vector<int>. Следовательно, vec[0][0] недопустимо.

Причина, по которой ваш первый пример не потерпел неудачу, заключается в том, что:

for(int j = 0; j < vec_c[i].size(); j++){

проверяет размер vec_c[0], который равен 0, поэтому У l oop нет фактических итераций.

...