我有两个STL向量A和B,需要将它们合并成第三个向量。合并后的元素应该按照一定的顺序排列,输出向量中每n个元素应该是来自向量B的。我的当前代码大致如下:
std::vector<int> a(10, 4);
std::vector<int> b(10, 8);
std::vector<int> c;
static const std::size_t STEP(3);
std::vector<int>::const_iterator bIt = b.begin();
for(std::vector<int>::const_iterator aIt = a.begin();
aIt != a.end(); ++aIt)
{
c.push_back(*aIt);
if((c.size() + 1) % STEP == 0)
{
c.push_back(*bIt);
++bIt; //assume b is large enough
}
}
现在向量c的样子是: 4 4 8 4 4 8 ...
这个方法可以正常运行,但我想知道是否有更加优雅的解决方案。有没有办法使用STL算法代替我手写循环呢?
std::transform
会做什么? - MSalters