如何在C++中快速创建数组

Par*_*dox 5 c++ arrays matlab

我已经习惯使用Python或Matlab,我可以创建一个列表:

min = 5;
step = 2;
max = 16;
Range = min:step:max;
Run Code Online (Sandbox Code Playgroud)

和范围将是列表[5,7,9,11,13,15].

是否有一种等效的简单方法可以在C++中生成像"Range"这样的列表?到目前为止,我能想到的最简单的事情是使用for循环,但这是相当繁琐的.

Jer*_*fin 5

C++不会在语言或标准库中提供这样的东西.我写了一个函数模板来查看(粗略地)来自标准库的东西,这个顺序是这样的:

namespace stdx {
    template <class FwdIt, class T>
    void iota_n(FwdIt b, size_t count, T val = T(), T step = T(1)) {
        for (; count; --count, ++b, val += step)
            *b = val;
    }
}
Run Code Online (Sandbox Code Playgroud)

从那里它看起来像这样:

std::vector<int> numbers;
stdx::iota_n(std::back_inserter(numbers), 6, 5, 2);
Run Code Online (Sandbox Code Playgroud)


Sin*_*all 2

您必须自己实现它,如下所示:

std::vector<int> createArray( int min, int max, int step )
{
    std::vector<int> array;
    for( int i = min; i < max; i += step )
    {
        array.push_back( i );
    }
    return array;
}
Run Code Online (Sandbox Code Playgroud)