c++ - 需要遍历整个对象,除了前两个元素。有设计模式吗?

标签 c++ loops design-patterns foreach

我有一个 std::vector我想遍历除前两个之外的每个对象。如果我不想要两个 foreach 循环将是完美的。即for(const auto i : items)我想到的可能的解决方案是删除前两个并在最后重新添加

const auto firstEle = myVec[0];
const auto secEle = myVec[1];
myVec.erase(myVec.begin());
myVec.erase(myVec.begin());
for(const auto i : items)
{
  //do stuff with i
}
myVec.insert(myVec.begin(), secEle);
myVec.insert(myVec.begin(), firstEle);
或有某种标志
unsigned int i = 0;
for(const auto j : items)
{
  if(i < 2)
  {
    i++;
    continue;
   }
   //do stuff with j
}
或使用 while 循环
unsigned int i = 2;
while(i < myVec.size())
{
  const auto j = myVec[i];
  //do stuff with j

  i++;
}
所有这些似乎都比它们需要的复杂。有更简单的更好的解决方案吗?

最佳答案

我通常使用常规循环来处理这些事情:

// verify myVec.size() > 2
for(auto it = myVec.begin()+2; it != myVec.end(); ++it) {
    // work
}
如果你想要 C++11 lambda 魔法,那么
std::for_each(v.begin()+2, v.end(), [](auto& element) {
     // do stuff
});
会做的。

关于c++ - 需要遍历整个对象,除了前两个元素。有设计模式吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64315287/

相关文章:

c++ - 运算符 << 重载和常量引用

ruby-on-rails - 将不同的 HTML5 格式应用于嵌套在数组中的散列中的键值

c# - 基于服务的系统中 session (跟踪)ID 的设计模式?

perl - 自重排作业队列的方法

c++ - boost::asio,异步读取错误

c++ - 如何在编译时替换元组元素?

Java基本循环

java - 代码重构帮助

c++ - 在cuda中使用邻接表分配图形?

Python 3 : Returning variable through multiple functions