2017-04-24 94 views
0

我是編程新手,需要有關循環的幫助。如何將向量中的值傳遞給具有多個參數的函數

我有填充有然而,許多數字

vector<int> data; 

我還具有以下功能

addEdge(graph, src, dest, weight) 

在數據中的數字的向量指定的數據被特別有序使得圖案[SRC ,dest,weight]得到維護。我想從數據[2]開始向前循環,直到達到data.size(),並且數據中沒有更多數字。

例如,我想創建一個循環,這是否:

addEdge(graph, data[2], data[3] , data[4]); 
addEdge(graph, data[5], data[6], data[7]); 
addEdge(graph, data[8], data[9], data[10]); 

等。直到data.size()爲止。這可能嗎?我試過一個for循環和while循環,但不停地卡住,例如:

for (int i=2; i< data.size(); i++){ 

     addEdge(graph, data[i], data[i+1], data[i+2]); 
    } 

或者我應該作出這樣 this

文件,讀取每一行和3點的整數,並通過作爲參數功能?我怎麼會在C++中做到這一點?或者我應該使用另一種類型的循環?謝謝。

+0

你在哪裏「卡住」你的for循環? (根據你的例子,它看起來像'i + = 3'可能是比'i ++'更好的增量。) – aschepler

+0

感謝你的幫助..我不認爲自己是程序員lol – pnovaz

回答

0

你在正確的方向,只是你錯過了一個for環,剛好與i+=3取代i++for循環,你是好去。

+1

感謝您的幫助! – pnovaz

0

我會硬編碼大步。當然,如果data.size()不能被3整除,就會發生這種情況。

for (int i = 0; i < data.size()/3; ++i) 
{ 
    addEdge(graph, data[3*i], data[3*i+1], data[3*i+2]); 
} 
+0

您是否看到OP在i = 2時開始計數? – Amadeus

+0

@Amadeus是的,但後來他一直到'data.size()'而不是'data.size() - 3'。在我看來,我的設計更好,更不容易出錯。 –

相關問題