2016-10-16 14 views
-3

は、あなたがintの次のベクトルを持っていると言う:複数の条件でのベクトル反復?

std::vector<int> V={5,4,3,2,1,6,7,8}; 

私は別のベクトルなど最初の増加のintにすべての減少int型のをプッシュしますイテレーションのいくつかのフォームを記述する必要があります。

std::vector<int> Results; 

for(int i=V.size(); i--;) 
{ 
    if(V[i]>V[i+1]){Results.push_back(V[i]);}; 
} 

しかしその時点では、この:

だからVのために、私は{5,4,3,2,1,6}

私の最初の考えは、forループを使用することでした必要私は立ち往生していますが、どのようにして最初の増加要素(この場合は6)を後退させることができますか?

+0

ループの後にすべてを減らしてからもう一度コピーしてみませんか?また、あなたの現在のループは意味をなさない。 – krzaq

+0

特殊なケースがある場合はOP – StoryTeller

答えて

1

コードを再構成する必要があります。たとえば、停止条件に達するとブレークします。

std::vector<int> results; 

for(int i = 0; i < v.size() - 1; ++i) 
{ 
    results.push_back(v[i]); 

    if(v[i] < v[i+1]) 
    { 
    results.push_back(v[i+1]); 
    break; 
    } 
} 
+0

に投稿してください。このような例でループ変数をループから抽出する必要があるたびに、なぜpythonがループ構文に 'else'節を追加したのかをもう一度理解します。 – StoryTeller

+0

これは適切な答えを提供しません。ベクトルは、最初のインデックスが2番目のインデックスよりも低いものから始まりますか?ループは停止し、進行しません。 –

+0

@BabraCunningham、あなたは実際にこの主張をする前にそれをチェックしましたか?また、あなたの問題の説明と例では、* *する必要があることを証明していません。 – StoryTeller

0
bool decrease = false; 
    for(i = 0; i < v.size() - 1; ++i) 
    { 
     if(V[i] > V[i+1]) { 
      decrease = true; 
      results.push_back(v[i]); 
     } else if(decrease == true) { 
      break; 
     } 

    } 

減少シーケンスが開始場合は、表現するためのフラグを追加することができます。