2017-04-24 14 views
0

私はプログラミングが初めてで、ループに関するヘルプが必要です。複数のパラメータをとる関数にベクトルの値を渡すには

私はパターン[SRCように、私はまた、以下の機能を持っているデータで

addEdge(graph, src, dest, weight) 

数字が具体的に順序付けられているが、多くの数字

vector<int> data; 

で満たされているベクトルという名前のデータを持っています、dest、weight]は維持されます。私はdata [2]から開始し、data.size()に達するまで前方にループし、データに残っている数値がなくなります。 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]); 

など。は、()に達している:

には、例えば、私はこれを行うループを作成したいです。これは可能ですか?私は、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

あなたはちょうどi+=3であなたのforループ内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() - 3'の代わりに' data.size() 'に至りました。私の考えでは、私のデザインはより良く、エラーが起こりにくいです。 –

関連する問題