C++ 在c++;

C++ 在c++;,c++,C++,我试图循环使用相同基类的两个向量。请参见下面的示例 for (const Animal *animal : [LOOP THROUGH TWO VECTORS HERE] ) { // access animal functions / variables } 在上面的例子中,我尝试循环通过两个动物载体。一种是const羊驼*,另一种是const骆驼*(两者都是动物)。您可以使用 : 您还可以查看一下只需使用两个循环,并将处理放在一个函数中: void f(Animal* animal

我试图循环使用相同基类的两个向量。请参见下面的示例

for (const Animal *animal : [LOOP THROUGH TWO VECTORS HERE] ) {
    // access animal functions / variables
}
在上面的例子中,我尝试循环通过两个动物载体。一种是
const羊驼*
,另一种是
const骆驼*
(两者都是动物)。

您可以使用

:


您还可以查看一下

只需使用两个循环,并将处理放在一个函数中:

void f(Animal* animal)
{
    // Do stuff here
}


你的向量是什么?您希望以什么顺序循环它们(同步、一个接一个、交错等)?它们的大小是否相同?如果有两个向量,为什么希望它是一个循环?你可以用<代码> const动物*/CONDE>创建一个新的向量,并将两个向量复制到新的向量中。C++中没有任何东西可以为你做这件事。可以单独循环每个向量,也可以创建自己的自定义迭代器类;但对你们来说,这可能是一项目前过于高级的任务。最终,随着C++专业知识的增加,您将能够创建自己的迭代器类,并具有自定义语义,这样可以简单地允许您编写这样的代码。但是学习C++要达到这个点需要时间。你唯一能做的就是把复制的逻辑分解成助手类,或者lambda,以便删除重复的代码。哇,这对我来说太新鲜了。谢谢分享!这适用于任意数量的向量吗?它是否也适用于任何容器?虽然这个答案可能会让至少两个人印象深刻——IMHO,但这不是OP想要的。OP声明两个向量应按顺序迭代(一个接一个,而不将两者的值配对在一起)。@ArdentCoder如果有两个循环,则必须复制循环体(或将其移动到lambda)。@ArdentCoder IMHO如Sam所怀疑的那样:消除代码重复。此解决方案强制执行额外的依赖性(boost)在行动中,这是一个令人讨厌的行动。它还阻止OP学习(使用两个循环并调用函数,或使用lambda,或许多其他好的学习技巧)
1 a 2 b
void f(Animal* animal)
{
    // Do stuff here
}
for (const Animal *animal : alpacas ) 
{
    f(animal);
}
for (const Animal *animal : llamas ) 
{
    f(animal);
}