2016-11-22 3 views
-5

漠然としたタイトルのため申し訳ありませんが、私はそれをどのように語るか分かりません。C++ベクタで値が変化するインデックスを返す方法は?

vector<int> vec{{ 
    1, 2, 3, 4, 5, 7, 8, 9, 10, 12, 13, 14 
}}; 

と番号(5~7など)見逃された後に発生し、対応する位置ベクトル:

私はベクトルを持っていると言います。

vector<int> positions{{ 
    1, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1 
}}; 

どのようにして、各1から次のものまで含めて2次元ベクトルを返しますか。

1 2 3 4 5 
7 8 9 10 
12 13 14 

事前におねがいしますが、私は自分の試みを投稿したいと思いますが、それらはすべて盲目的な道を導いてくれました。私はこの問題を解決するには、いくつかの方法があります

+0

は*、いいえ、あなたは、しませんでした作成する場合は、この質問を投稿しないでください。 –

+0

ありがとう、私は彼らを追加したと言いましたが、彼らはどこにも導かれていないようですので、なぜそれらを含み混乱させるのでしょうか?私はおかしなことではありませんが、最初に試してみることなくSOに行くことはありません。 – TW93

+0

最初の行に空のベクトルが欲しいですか? –

答えて

0

...それは奇妙な構造だけど、私は、これは動作するはずと信じて:私は私の試みを投稿したい*

std::vector<std::vector<int>> vec2D; 
int index = -1; 
// Identify the indices of the position vector and use that to identify the 
// correct indices of the vec. 
for (int i = 0; i != position.size(); ++i) 
{ 
    // if the value at i of the position vector is 0, 
    // push_back the value at i of the vec vector into 
    // the correct vector of vector. 
    if (0 == position[i]) 
    { 
     vec2D[index].push_back(vec[i]) 
    } 
    else if (1 == position[i]) 
    { 
     ++index; //increment to the next vector 
     std::vector<int> temp; 
     vec2D.push_back(temp); 
     vec2D[index].push_back(vec[i]) 
    } 
} 
+0

はい、うまくいきました。インクリメントしているベクトルが私を少し投げたので、そのビットは本当に私のためにクリアしました。ありがとう。 – TW93

+1

@ TW93ちょうどメモで、 'positions'の最初の項目が' 1'でない場合、これはうまくいかないでしょう –

+0

心配しないで、私はそれを集めました。その前のコードは1で始まらなければなりません – TW93

関連する問題