是否有一种简单/优雅的方法将整数范围推送到STD向量?

Nir*_*rMH 2 c++ std c++11

我有一个简单的任务,即std::vector<int>使用一系列整数初始化一个.

范围由用户给出,我尽量避免使用for循环.

就像是:

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?

}
Run Code Online (Sandbox Code Playgroud)

For*_*veR 9

您可以使用算法iota在C++ 11中执行此操作.

vReturn.clear();
vReturn.resize((nEnd - nStart) + 1);
std::iota(vReturn.begin(), vReturn.end(), nStart);
Run Code Online (Sandbox Code Playgroud)

你也可以使用boost :: irange.

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