0

我正在编写一个程序,它将接收二维向量的值并为它们提供输出。但是,我遇到了运行时错误。

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

3 回答 3

3

您的向量向量为空。你做不到,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>());

于 2020-01-27T13:55:18.240 回答
1

你声明了一个空向量

vector<vector<int> > vec;

所以你不能像这样使用下标运算符

vec[0].push_back(1);

您可以声明具有至少一个类型元素的std::vector<int>向量

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
于 2020-01-27T14:10:29.963 回答
0

扩展答案

您甚至可以分配一行vector并添加到 main 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;
}
于 2020-01-27T14:07:13.630 回答