Если вам нужно многое из этого, вы можете легко написать свою собственную функцию, которая может работать с любым контейнером (который поддерживает резерв и может быть заполнен std::generate
):
template <typename TContainer>
TContainer fill(typename TContainer::value_type start,
typename TContainer::value_type step,
typename TContainer::value_type end) {
size_t size = static_cast<size_t>((end - start)/step + 1);
TContainer output(size);
std::generate(std::begin(output), std::end(output),
[&start, step]() {
return std::exchange(start, start + step);
}
);
return output;
}
Тогда вы можете использовать его следующим образом:
auto vec = fill<std::vector<int>>(0, 2, 10);
auto list = fill<std::list<float>>(1, 0.3, 5);
Живой пример
И вы получите:
vec: 0, 2, 4, 6, 8, 10
list: 1, 1.3, 1.6, 1.9, 2.2, 2.5, 2.8, 3.1, 3.4, 3.7, 4, 4.3, 4.6, 4.9