c++ - 顺序序列容器或如何打包 vector

标签 c++ boost stl std

假设我有两个 vector :

std::vector<int> A,B;
//Push a bunch of data into A
//Push a bunch of data into B

无论出于何种原因,我想为这些 vector 创建一个接口(interface),如下所示:

packed combined(A,B);
for(packed::iterator i=combined.begin();i!=combined.end();++i)
  *i+=1;

这将具有与以下相同的效果:

for(std::vector::iterator i=A.begin();i!=A.end();++i)
  *i+=1;
for(std::vector::iterator i=B.begin();i!=B.end();++i)
  *i+=1;

我可以编写一个类来执行此操作,但似乎该代码可能已经存在于某处的库中。有谁知道是否是这种情况?

或者,您能想出一个巧妙的方法来做到这一点吗?

最佳答案

boost::join :

#include <vector>
#include <boost/range/join.hpp>

int main()
{
    std::vector<int> a = {1,2,3}, b = {4,5,6};
    for(int& i : boost::join(a, b)) {
        i += 1;
    }
}

关于c++ - 顺序序列容器或如何打包 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16225739/

相关文章:

c++ - 现在要删除与谓词匹配的元素?

C++ getchar 不能正常工作

c++ - 在类 C++ 中更改整数

c++ - 在大项目中使用 c++11 std::tuple

c++ - 多维数组实现

c++ - 使用use_future的Boost Asio async_send_to多播不起作用

c++ - 为什么当我删除其他字符时最后一个字符会加倍,如何防止这种情况发生?

c++ - 以空格终止

python - 将 CMakeLists.txt、boost-python 与 python setuptools 相结合

c++ - 从两个线程调用 std::deque 上的删除和push_back是否是线程安全的?