c++ - 如何按顺序迭代几个容器?

标签 c++ loops boost iterator containers

<分区>

有一段类似于以下的代码:

#include <iostream>
#include <vector>

int main()
{
  std::vector<std::string> v1, v2;
  for (const auto& s : v1) {
    // do something with s
  }
  for (const auto& s : v2) {
    // do something with s
  }
}

我想一次遍历 v1v2 中的所有元素(并且由于这些循环中的逻辑有点困难,所以我不能在其中使用函数- 为了这个问题)。

所以理想的解决方案应该是这样的:

  for (const auto& s : magic(v1,v2)) {
    // do something with s
  }

显然没有分配所有元素复制到它的新容器(因为该解决方案是微不足道的。

是否有类似的东西,例如在 boost?

最佳答案

range-v3 , 你可以这样做

const std::vector<std::string> v1{"A", "B", "C"}, v2{"D", "E", "F"};

for (const auto& s : ranges::view::concat(v1, v2)) {
    std::cout << s << std::endl;   
}

Demo

关于c++ - 如何按顺序迭代几个容器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41596119/

相关文章:

c++ - 为什么在这种情况下创建临时实例不起作用?

c++ - 为 json 数组中的所有 child boost ptree 节点

c# - .NET/C# - 此处使用的正确方法 - LINQ

javascript - 迭代数组并合并两个数组

c++ - 无法编译 boost spirit example4.cpp

c++ - std::async lambda 函数中局部变量的生命周期

c++ - 用非纯虚版本重载纯虚函数

c++ - 程序崩溃而没有错误消息

c++ - 将编译器错误插入到共享内存中的 map 中

c++ - 具有更高含义的简单类型 (C++11)