Предположим, что у меня есть виртуальный базовый класс и некоторые производные конкретные классы:
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-loops, делая то же самое в каждом. Но очевидно, что далеко не оптимальное решение.
Есть ли умный способ объединить векторы в общий контейнер с указателями/ссылочными типами базового класса, так что мне нужно повторять только один раз? Или любая другая идея, как решить эту проблему?