невозможно получить вывод из 2d вектора из-за ошибки времени выполнения - PullRequest
0 голосов
/ 27 января 2020

Я пишу программу, которая получит значение двумерного вектора и предоставит им вывод. Но я получаю ошибку времени выполнения.

#include <bits/stdc++.h>
using namespace std;
int main() {
// your code goes here
vector<vector<int> > vec;
vec[0].push_back(1);
vec[0].push_back(2);
vec[0].push_back(13);

for(int i=0;i<3;i++)
{
    cout<<vec[0][i]<<" ";
}
return 0;
}

Ответы [ 3 ]

3 голосов
/ 27 января 2020

Ваш вектор векторов пуст. Вы не можете сделать vec[0].push_back(1);, потому что vec[0] не существует. Вы можете решить эту проблему, сделав свой вектор векторов размером не менее 1, указав его в конструкторе . Измените это

vector<vector<int> > vec;

На это:

vector<vector<int> > vec(1);

В качестве альтернативы вы можете push_back вектор в свой вектор векторов:

vec.push_back(std::vector<int>());

1 голос
/ 27 января 2020

Вы объявили пустой вектор

vector<vector<int> > vec;

Таким образом, вы не можете использовать оператор индекса как

vec[0].push_back(1);

Вы можете объявить вектор, имеющий хотя бы один элемент типа std::vector<int> like

vector<vector<int> > vec( 1 );

В любом случае вы можете объявить и инициализировать вектор одним оператором, как показано в демонстрационной программе ниже.

#include <iostream>
#include <vector>

int main() 
{
    std::vector<std::vector<int>> vec = { 1, { 1, 2, 13 } };

    for ( const auto &item : vec[0] ) std::cout << item << ' ';
    std::cout << '\n';

    return 0;
}

Выходные данные программы

1 2 13
0 голосов
/ 27 января 2020

расширяя ответ ,

, вы даже можете выделить строку vector и добавить к основному vector. с помощью которого вы можете добавлять новые строки,

int main() {           
    vector<int> v1;
    v1.push_back(1);
    v1.push_back(2);
    v1.push_back(13);

    vector<vector<int>> vec;
    vec.push_back(v1);

    for (int i = 0; i < 3; i++)
    {
        cout << vec[0][i] << " ";
    }
    return 0;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...