std::iota (3) Linux Manual Page
std::iota – std::iota
Synopsis
Defined in header<numeric>
template <class ForwardIt, class T>
(since C++ 11)
void iota(ForwardIt first, ForwardIt last, T value);
Fills the range [first, last) with sequentially increasing values, starting with value and repetitively evaluating ++value.
Equivalent operation:
*(d_first) = value;
*(d_first+1) = ++value;
*(d_first+2) = ++value;
*(d_first+3) = ++value;
...
Parameters
first, last – the range of elements to fill with sequentially increasing values starting with value
value – initial value to store, the expression ++value must be well-formed
Return value
(none)
Complexity
Exactly last – first increments and assignments.
Possible implementation
Notes
The function is named after the integer function ⍳ from the programming language APL. It was one of the STL_components that were not included in C++98, but eventually made it into the standard library in C++11.
Example
The following example applies std::shuffle to a vector of std::list iterators since std::shuffle cannot be applied to a std::list directly. std::iota is used to populate both containers.
// Run this code
#include <algorithm>
#include <iostream>
#include <list>
#include <numeric>
#include <random>
#include <vector>
int main()
{
std::list<int> l(10);
std::iota(l.begin(), l.end(), -4);
std::vector<std::list<int>::iterator> v(l.size());
std::iota(v.begin(), v.end(), l.begin());
std::shuffle(v.begin(), v.end(), std::mt19937{std::random_device{}()});
std::cout << "Contents of the list: ";
for (auto n : l)
std::cout << n << ' ';
std::cout << '\n';
std::cout << "Contents of the list, shuffled: ";
for (auto i : v)
std::cout << *i << ' ';
std::cout << '\n';
}
Possible output:
See also
fill (function template)
generate (function template)
