顺序序列容器或如何打包矢量

时间:2013-04-25 22:23:46

标签: c++ boost stl std

想象一下,我有两个向量:

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

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

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;

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

或者,你能想到一个狡猾的方式吗?

1 个答案:

答案 0 :(得分:5)

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