use std::fill to populate vector with increasing numbers
c++, stl
Solution
Preferably use `std::iota` like this:
#include <vector>
#include <numeric>
// ...
std::vector<int> v(100) ; // vector with 100 ints.
std::iota (std::begin(v), std::end(v), 0); // Fill with 0, 1, ..., 99.
That said, if you don't have any `c++11` support (still a real problem where I work), use `std::generate` like this:
#include <vector>
#include <algorithm>
// ...
struct IncGenerator {
int current_;
IncGenerator (int start) : current_(start) {}
int operator() () { return current_++; }
};
// ...
std::vector<int> v(100) ; // vector with 100 ints.
IncGenerator g (0);
std::generate( v.begin(), v.end(), g); // Fill with the result of calling g() repeatedly.
Problem
I would like to fill a `vector<int>` using `std::fill`, but instead of one value, the vector should contain numbers in increasing order after. I tried achieving this by iterating the third parameter of the function by one, but this would only give me either vectors filled with 1 or 2 (depending of the position of the `++` operator). Example: ``` 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 ```