在STL或boost中是否有C++等效的python Xrange生成器?
xrange基本上生成递增的数字,每次调用++运算符.构造函数是这样的:
xrange(first, last, increment)
Run Code Online (Sandbox Code Playgroud)
我希望通过每个使用boost来做这样的事情:
foreach(int i, xrange(N))
Run Code Online (Sandbox Code Playgroud)
我知道for循环.在我看来,他们是太多的样板.
谢谢
我想要这样做的主要原因是因为我使用语音文本软件,并且编程循环通常很难,即使使用代码完成.具有可显示的构造更有效.
许多循环从零开始并递增1,这是范围的默认值.我发现python构造更直观
for(int i = 0; i < N; ++i)
foreach(int i, range(N))
Run Code Online (Sandbox Code Playgroud)
需要将范围作为参数的函数:
Function(int start, int and, int inc);
function(xrange r);
Run Code Online (Sandbox Code Playgroud)
我理解语言之间的差异,但是如果python中的特定构造对我非常有用并且可以在C++中高效实现,我没有理由不使用它.对于每个构造,C++都是外来的,但是人们使用它.
我将我的实现放在页面底部以及示例用法.
在我的域中我使用多维数组,通常排名4张量.所以我经常会得到4个具有不同范围/增量的嵌套循环来计算规范化,索引等等.这些不一定是性能循环,我更关心正确性可读性和修改能力.
例如
int function(int ifirst, int ilast, int jfirst, int jlast, ...);
versus
int function(range irange, range jrange, ...);
Run Code Online (Sandbox Code Playgroud)
在上面,如果需要不同的strid,你必须传递更多的变量,修改循环等,最终你会得到大量的整数/几乎相同的循环.
foreach和range完全解决了我的问题.对普通C++程序员的熟悉程度并不高我的关注列表 - 问题领域是一个相当模糊,有很多元编程,SSE内在,生成代码.