Is there a simple / elegant way to push a Range of integers to an STD vector?

c++, c++11, std

Solution

You can do this in C++11, using algorithm iota.

vReturn.clear();
vReturn.resize((nEnd - nStart) + 1);
std::iota(vReturn.begin(), vReturn.end(), nStart);

You can also use boost::irange.

auto range = boost::irange<int>(nStart, nEnd + 1);
vReturn.assign(range.begin(), range.end());

Problem

I have a simple task which is to initialize an `std::vector<int>` with a range of integers. The range is given by the user, and i try to avoid using a `for` loop. Something like: ``` void addRange(std::vector<int>& vReturn, int nStart, int nEnd) { vReturn.clear(); // straightforward solution for (int nInteger = nStart; nInteger <= nEnd; nInteger++) { vReturn.push_back(nInteger); } ////////////////////////////////////////////// // Elegent Pseudo-Code vReturn.add_range(nStart, nEnd); // <<- is this doable? } ```

Original source