如果我想在迭代器范围内复制相同的值,我认为在没有Noop迭代器的地方传递值很容易,并且当它递增时,它不会在任何地方移动。这将允许使用现有的std::copy
和std::copy_if
算法。
但是,我似乎找不到这种野兽。我要自己滚吗?
答案 0 :(得分:6)
使用std::fill
或std::fill_n
算法。
某些容器,例如std::vector<>
和std::list<>
具有大小和初始值设定项的构造函数:
std::vector<int> v(10, 42); // 42 is the initializer
v.resize(20, 42); // Initialize new elements with 42.
答案 1 :(得分:3)
据我所知,没有迭代器,但是有一个算法。 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; });