これが整数の 2D ベクトルです。
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};
ベクトルに適切な次元を既に与えているため、2 番目のソリューションが最適です。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});