为什么“std :: cout<< myVector [x] [x]<< std :: endl”会产生下标错误?

时间:2015-02-12 11:32:01

标签: c++ stl stdvector

这可能是一个非常简单的问题,但它正在追捕我。 我可以将数据放入容器中,但我似乎无法将其打印到控制台。

以下内容产生超出范围调试错误的下标

这是我的代码

std::vector<std::vector<int>> myVector;

for (int x = 0; x != 18; x++)
{
   myVector.push_back(std::vector<int>(x,x));
   std::cout << myVector[x][x] << std::endl;
}

非常感谢!

1 个答案:

答案 0 :(得分:2)

std::vector<int>(x,x) x=0分配zero elements时,你在{for}循环内进行循环。在其他时候,您分配x个元素(行索引:x和列索引:0,1,...x-1)并访问x+1行中的x元素。

所以将其改为

for (int x = 0; x != 18; x++)
{
  myVector.push_back(vector<int>(x+1,x));
  std::cout << myVector[x][x] << std::endl;
}