Насколько я знаю, для этого нет итератора, но есть алгоритм.std::generate
примет диапазон и присвоит значение каждому элементу, который возвращается из генератора, переданного ему.Например, если вы хотите присвоить все 42, которые будут выглядеть как
std::vector<int> vec(20);
std::generate(vec.begin(), vec.end(), []() { return 42; });
Вы можете даже получить значения, которые меняются, например
std::vector<int> vec(20);
std::generate(vec.begin(), vec.end(), []() { static int counter = 0; ++counter; return counter * counter; });