0

これが整数の 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});

}
4

2 に答える 2

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};
}
于 2016-11-09T22:14:04.243 に答える
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});
于 2016-11-09T22:10:46.700 に答える