Есть много способов сделать это, в зависимости от вашей ситуации.Вот вариант (каламбур) с std :: variable:
std::vector<int> v1 = { 1, 2, 3 };
std::vector<float> v2 = { 4.5f, 5.5f, 6.5f };
std::vector<double> v3 = { 7.5, 8.5, 9.5 };
std::vector<std::variant<std::vector<int>, std::vector<float>, std::vector<double>>> all;
all.push_back(v1);
all.push_back(v2);
all.push_back(v3);
for(auto& variant : all)
{
std::visit([](const auto& container) {
for(auto value : container)
{
std::cout << value << '\n';
}
}, variant);
}
std::any
с удалением типа также будет работать.Или перейти на один уровень ниже, например, с std::vector<std::variant<int, float, double>>
.