这是我的二维整数向量。
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});
}
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};
}
使用方法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});