【发布时间】:2017-12-10 23:58:09
【问题描述】:
假设我有一个虚拟基类和一些派生的具体类:
class Base { ... }
class DerivedA : public Base { ... }
class DerivedB : public Base { ... }
class DerivedC : public Base { ... }
在某个地方我有每个派生类的对象向量:
std::vector<DerivedA> my_a;
std::vector<DerivedB> my_b;
std::vector<DerivedC> my_c;
现在,我经常需要遍历所有三个向量中的所有元素并练习基类接口。我可以编写三个 for 循环,每个循环都完全相同。但显然这远非最佳解决方案。
有没有一种聪明的方法可以将向量连接到一个带有基类指针/引用的公共容器中,这样我只需要迭代一次?或者任何其他想法如何优雅地解决这个问题?
【问题讨论】:
-
我对此的理想选择是某种
range_of(my_a, my_b, my_c)函数,它返回一个基本类型的范围。 -
一个包含对向量的引用的自定义迭代器类?
-
调用函数模板?
-
Range V3 的
view::concat似乎应该能够做到这一点,但我无法让它工作
标签: c++ c++11 polymorphism containers