具有多个条件的向量迭代

Vector iteration with multiple conditions?

本文关键字:向量 迭代 条件      更新时间:2023-10-16

假设您有以下Int的向量:

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

我需要编写某种形式的迭代,将所有递减的int推入一个单独的向量以及第一个递增的int。

所以对于V,我需要{5,4,3,2,1,6}

我最初的想法是使用for循环:

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

然而,在这一点上,我被卡住了,我如何也能推回第一个递增元素(在本例中为6(?

您需要重新构造代码。例如:达到停止条件时中断。

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

您可以添加一个标志来表示递减序列是否开始。