2016-11-09 4 views

答えて

0

nodes[i]整数のベクトルで使用することができます。 ベクトルを整数のベクトルに追加しようとしています。

のどちらかを実行します。

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

または

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

あなたはすでにあなたのベクトルへの適切な次元を与えたので、最高であること第二の溶液

。空の作成、および push_backを取り込むのいずれか、 r*c以上の要素...あなたのコード内の

を追加する必要はありません:

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}; 
} 
+0

こんにちはジーン、ありがとうございました!それが問題を解決しました! – Ishrat

0
代わり push_back

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

使用方法insertしかし、この前には、各サブベクトルのそれ以外の場合は最初の5つの要素はゼロが含まれます

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

のようなベクトルを宣言する必要があります。

また、あなたは方法assign

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

です問題ではありません。 'nodes [i]'は_integers_のベクトルです。ベクトルを挿入することはできません。それで 'push_back'が失敗する(そして' insert'はコンパイルされますが、神は何をしているのか分かります。) –

+0

@ Jean-FrançoisFabreНщгあなたは間違っています。挿入されるベクトルではありません。挿入される初期化子リストの値です。 –

+0

ノード{i} .end()、{i/c、i%c、-1、-1、0}は、 ); 'はコンパイルされません(' I'は宣言されていません)。 'nodes.insert(nodes.end()、{i/c、i%c、-1、-1、0});'コンパイル! –

関連する問題