为什么我不能在 C++ 中将整数向量推入二维整数向量?

Why can't I push a vector of integers to a 2-D vector of integers in C++?

这是我的二维整数向量。

vector<vector<int>> nodes (r*c, vector<int> (5));

使用for循环我试图push_back这个向量中的值。 r 和 c 是传递给这个函数的整数。

for(i = 0; i < r*c; i++)

{        
       nodes[i].push_back({i/c, i%c, -1, -1, 0});

}

使用方法 insert 而不是 push_back

nodes[i].insert( nodes[I].end(), {i/c, i%c, -1, -1, 0});

但在此之前你应该像这样声明向量

vector<vector<int>> nodes (r*c );

否则每个子向量的前 5 个元素将包含零。

也可以使用方法assign

nodes[i].assign(  {i/c, i%c, -1, -1, 0});

nodes[i] 整数 的向量。您正在尝试将 向量 附加到整数向量。

要么:

nodes.push_back({i/c, i%c, -1, -1, 0});

nodes[i] = {i/c, i%c, -1, -1, 0};

第二个解决方案是最好的,因为您已经为矢量指定了正确的维度。无需再添加 r*c 个元素...

在您的代码中,要么创建空的,然后填充 push_back:

std::vector<std::vector<int>> nodes;
for(i = 0; i < r*c; i++)
{        
   nodes.push_back({i/c, i%c, -1, -1, 0});
}

或使用适当的维度创建并分配项目:

std::vector<std::vector<int>> nodes (r*c, std::vector<int> (5));
for(i = 0; i < r*c; i++)
{        
   nodes[i] = {i/c, i%c, -1, -1, 0};
}