相关疑难解决方法(0)

STL或boost中的C++范围/ xrange等价物?

在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内在,生成代码.

c++ boost iterator

37
推荐指数
2
解决办法
1万
查看次数

标签 统计

boost ×1

c++ ×1

iterator ×1