我想填充一个 vector<int>
使用 std::fill
,但不是一个值,该向量应该包含之后按升序排列的数字。
我尝试通过将函数的第三个参数迭代一个来实现这一点,但这只会给我填充 1 或 2 的向量(取决于 ++
运算符的位置)。
例子:
vector<int> ivec;
int i = 0;
std::fill(ivec.begin(), ivec.end(), i++); // elements are set to 1
std::fill(ivec.begin(), ivec.end(), ++i); // elements are set to 2
原文由 BlackMamba 发布,翻译遵循 CC BY-SA 4.0 许可协议
我发现最好的方法是使用
std::generate_n
和std::back_insert_iterator
。这个例子实际上是在 std::back_insert_iterator 的 cppreference 页面中 给出的。但是,我将对这个示例进行的一项更改是保留您将要进行的插入次数,以最大限度地减少重新分配,如下所示: