2016-11-09 27 views

回答

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

嗨吉恩,非常感謝!這解決了問題! – Ishrat

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

這不是問題。 '節點[i]'是_integers_的向量。你不能在其中插入一個向量。這就是爲什麼'push_back'失敗(和'插入'編譯,但上帝知道它在做什麼。Segfault here) –

+0

@ Jean-FrançoisFabreНщг你錯了。它不是插入的矢量。它是插入的初始化程序列表的值。 –

+0

我還有一個疑問,你顯然沒有測試,因爲'節點[i] .insert(節點[I] .end(),{i/c,i%c,-1,-1,0} );'不編譯('我'未申明)。還有'nodes.insert(nodes.end(),{i/c,i%c,-1,-1,0});'編譯! –

相關問題