我已经习惯使用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循环,但这是相当繁琐的.
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)
您必须自己实现它,如下所示:
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)
| 归档时间: |
|
| 查看次数: |
278 次 |
| 最近记录: |