我对c++两个二维向量感到困惑
#include <vector>
int main()
{
//First Code
std::vector<int> oneDimArray;
oneDimArray.push_back(5);
for (int i = 0; i < oneDimArray.size(); i++)
{
std::cout << oneDimArray[i];
}
//Second Code
std::vector<std::vector<int>> twoDimArray;
twoDimArray[0].push_back(5); //Here giving error
for (int i = 0; i < twoDimArray.size(); i++)
{
for (int j : twoDimArray[i])
{
std::cout << j;
}
}
return 0;
}
当我尝试运行此代码时,第一个代码正在工作。但在第二个代码中,我在尝试推回时得到了向量超出范围的错误。我想一开始我应该说twoDimArray
的第一个尺寸。但我不知道怎么说。因为我在.h
文件中定义了这个twoDimArray
,所以如果我这样做,我必须在那里做。你能帮我吗?
- 您试图访问的矢量为空
- 您正试图将一个
int
放入一个本应包含vector<int>
s的向量中。固定代码:
#include <vector>
#include <iostream>
int main()
{
std::vector<int> oneDimArray;
oneDimArray.push_back(5);
for (int i = 0; i < oneDimArray.size(); i++)
{
std::cout << oneDimArray[i];
}
std::vector<std::vector<int>> twoDimArray;
twoDimArray.push_back(oneDimArray); //You can put a vector of ints in here
for (int i = 0; i < twoDimArray.size(); i++)
{
for (int j : twoDimArray[i])
{
std::cout << j;
}
}
return 0;
}
twoDimArray[0].push_back(5)
无效,因为矢量还没有大小。在您推后某些内容,或在此处执行twoDimArray.resize(
新大小);
后,您可以执行此操作(只要它不超出范围(。
此外,一旦向量具有大小,就可以像twoDimArray[0][0] = 1;
一样访问向量内部的向量元素。这将给出向量内部第一个向量的第一个值,以获得值1。