整数C ++的二维向量。怎么了?

时间:2013-06-13 19:52:06

标签: c++ vector stl

我有二维向量的问题。例如:

vector < vector<int> > data;

int i = 0;
int int_value;
while (i < 10 )
{   
    cin >> int_value;
    data[i].push_back (int_value);
}

我想使用push_back进行后插入,然后我想使用data [i] [j]。问题在哪里?

5 个答案:

答案 0 :(得分:4)

您需要在使用data之前初始化向量data[i]。否则,向量为空,访问data[i]超出范围。此外,您需要在i循环中增加while

vector < vector<int> > data(10); // creates a vector of size 10,
                                 // each element being an empty vector of int's
int int_value;
for (int i=0; i < 10; i++)
{   
  cin >> int_value;
  data[i].push_back (int_value); // add int_value to the ith vector
}

循环后,每个向量包含用户输入的一个int值。

答案 1 :(得分:1)

data[i]不存在,因为vector的空构造函数创建了一个大小为0的向量。因此,当您调用data[i]时,这将超出范围。就像一维向量一样,首先为数据分配足够的元素。在您的情况下,您似乎需要大小为10的数据:

vector < vector<int> > data(10);

此外,你永远不会在while循环中增加i,这似乎会导致无限循环。

答案 2 :(得分:0)

您有一个空矢量向量,并且您正在尝试访问其元素(data[i])。显然,在添加一些内容之前,您无法执行此操作(通过push_backresize或其他data方法本身。)

答案 3 :(得分:0)

问题是data[i]不存在。首先,您需要将vector<int>推入vector< vector<int> >向量,然后才能向其中添加整数。

答案 4 :(得分:0)

vector < vector<int> > data;

data是一个空的向量,其中包含vector<int>

data[i].push_back (int_value);

data为空。因此,执行data[i]会导致未定义的行为。