为什么我不能在 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};
}
这是我的二维整数向量。
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};
}