有没有一种方法可以在不使用两个for循环的情况下迭代两个容器(一个跟随另一个)?
我的意图是像这样做:
打印
(当然它不起作用。解释在这个答案中)
我不想写两个for循环并复制循环内的代码。有没有一种方法可以使用单个for循环迭代a和b?
我唯一能想到的就是将第二个容器复制/移动到第一个容器中,或者创建一个新的向量来合并a和b,然后迭代它。但我也不想这样做,因为这意味着昂贵的复制操作。
我的意图是像这样做:
vector<int> a{ 1,2,3 };
vector<int> b{ 4,5,6 };
auto it = a.begin();
auto end = b.end();
for (; it != end; ++it)
{
if (it == a.end())
{
it = b.begin();
}
// do something with *it
}
打印
1 2 3 4 5 6
(当然它不起作用。解释在这个答案中)
我不想写两个for循环并复制循环内的代码。有没有一种方法可以使用单个for循环迭代a和b?
我唯一能想到的就是将第二个容器复制/移动到第一个容器中,或者创建一个新的向量来合并a和b,然后迭代它。但我也不想这样做,因为这意味着昂贵的复制操作。
std::for_each
),并将重复的行为实现在一个单独的函数中,该函数将被传递给该算法? - Fureeish