我想使用
我尝试通过将函数的第三个参数迭代一次来实现这一点,但这只会给我一个填充了1或2的向量(取决于
示例:
std::fill
填充一个vector<int>
,但这个向量不应该只包含一个值,而是在填充时依次递增。我尝试通过将函数的第三个参数迭代一次来实现这一点,但这只会给我一个填充了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
std::iota
代替std::fill
(假设您的编译器足够新支持它)。 - Jerry Coffinstd :: vector
吗?boost版本是一个函数模板,第一个参数的“类型名称”指定了一个概念。很难说,因为我只能找到非常形式化的规范,没有简单的描述,但我认为std :: vector
符合该概念。 - James Kanzeboost::range::iota
与std::vector
完美配合。是的,std::vector
模拟了ForwardRange
(确切地说是RandomAccessRange
)。 - Casey