Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/142.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在运行时填充多维向量_C++_Vector_Multidimensional Array - Fatal编程技术网

C++ 在运行时填充多维向量

C++ 在运行时填充多维向量,c++,vector,multidimensional-array,C++,Vector,Multidimensional Array,显然,这不起作用,所以代码是错误的,但我如何修复它? 就我所知,这一切都可能是错误的lol,但我正试图创建一个多维向量,在运行时创建它自己。我得到一个错误:向量下标超出范围 #include <iostream> #include <vector> int main(){ int row = 0, col = 0; std::cout << "Size of Row: "; std::cin >> row; std::cout

显然,这不起作用,所以代码是错误的,但我如何修复它? 就我所知,这一切都可能是错误的lol,但我正试图创建一个多维向量,在运行时创建它自己。我得到一个错误:
向量下标超出范围

#include <iostream>
#include <vector>

int main(){
   int row = 0, col = 0;
   std::cout << "Size of Row: "; std::cin >> row; 
   std::cout << "Size of Column: "; std::cin >> col;

   std::vector<std::vector<int>> td;
   td.resize(row * col);

   for (int i = 0; i <= row; i++){
      for (int j = 0; j <= col; j++){
        td[i][j];
      }
   }
}
#包括
#包括
int main(){
int行=0,列=0;
标准::cout>行;
标准:cout>col;
std::向量td;
td.调整大小(行*列);
当你使用

td.resize(row * col);
td
的第一个维度将是
row*col
,但其第二个维度仍然为空。这就是为什么会出现错误

你应该使用

td.resize(row); // set first dimension
for (int i=0; i<row; i++) // set each second dimenstion
    td[i].resize(col);
td.resize(行);//设置第一个维度

for(int i=0;itd指的是外部向量,因此调整大小会使row'col空向量的向量锐化。您需要将其调整为row'col,然后for i循环可以说td[i]。resize(col)您需要为向量向量分配适当的内存量。您可以使用以下代码显式设置空行和空列的数量,而不是调整其大小

std::vector< std::vector<int> > td(row+1, std::vector<int>(col+1)); 
//+1 is needed because the loop you created is <=
std::vectortd(行+1,std::vector(列+1));
//+1是必需的,因为您创建的循环是td(row,std::vector(col));
对于(int i=0;i
std::vector< std::vector<int> > td(row+1, std::vector<int>(col+1)); 
//+1 is needed because the loop you created is <=
std::vector< std::vector<int> > td(row, std::vector<int>(col));

for (int i = 0; i < row; i++){
  for (int j = 0; j < col; j++){
    td[i][j];
  }
}