问题标签 [ranged-loops]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
8 回答
52506 浏览

c++ - C++11 中是否有一个范围类可用于基于范围的 for 循环?

我发现自己刚刚在写这个:

这让我可以写这样的东西:

现在,我知道我写的可能不是最好的代码。也许有一种方法可以让它更加灵活和有用。但在我看来,像这样的东西应该成为标准的一部分。

是吗?是否为整数范围内的迭代器添加了某种新库,或者可能是计算的标量值的通用范围?

0 投票
10 回答
153689 浏览

c++ - C++11 反向基于范围的 for 循环

是否有容器适配器可以反转迭代器的方向,以便我可以使用基于范围的 for 循环反向迭代容器?

使用显式迭代器,我会转换它:

进入这个:

我想转换这个:

对此:

有这样的东西还是我必须自己写?

0 投票
1 回答
730 浏览

c++ - 包装迭代句柄以用于基于范围的 for 循环

我使用带有使用void*句柄的迭代功能的 API。

我将如何将其包装到 C++11 迭代器中以用于基于范围的 for 循环?由于 的值handle实际上并没有改变,我需要在operator != ().

0 投票
4 回答
3045 浏览

c++ - 基于范围的 for 循环和多个迭代器

我有以下代码,表示 3D 应用程序中的网格(为清楚起见省略了一些代码):

它工作得很好,为内部数据提供了一个清晰的界面。没有公开容器的实现细节。

不过,我对此有一点小问题。我不能使用基于范围的 for 循环,必须使用迭代器:

对我的口味来说有点冗长。我的首选客户端代码将如下所示:

是否可以在暴露容器的实现细节的情况下实现这一点?另外,我不想将容器包装到自定义类中,因为我希望完全访问 Mesh 类中的所选容器(std::vector)。

0 投票
2 回答
432 浏览

c++ - 通过范围循环从指针容器中获取取消引用元素的引用

给定一个指向 s 的指针容器int,如何在int不使用*循环体中的取消引用运算符的情况下增加 s {}

这是在循环体中使用取消引用运算符的实现:

更换

给 MSVC-2013

error C2440: 'initializing' : cannot convert from 'int *' to 'int &'.

为什么替换为

编译但不增加ints,它在做什么?

我对替换有同样的问题

这给出了相同的结果。

0 投票
1 回答
554 浏览

c++ - vc++ 不再使用基于范围的语法对简单的 for 循环进行矢量化

在用基于范围的 for 循环替换我的许多“旧”for 循环之前,我使用 Visual Studio 2013 进行了一些测试:

查看反汇编,循环的标准都被矢量化了:

但基于范围的 for 循环不是:

编译器是否有任何理由无法对这些循环进行矢量化?

我真的很想使用新的语法,但是失去矢量化太糟糕了。

我刚看到这个问题,所以我尝试了/Qvec-report:2flag,给出了另一个原因:

那是:

循环包含阻止矢量化的循环携带的数据依赖性。循环的不同迭代相互干扰,因此对循环进行矢量化会产生错误的答案,并且自动矢量化器无法向自己证明不存在这种数据依赖性。

这是同一个错误吗?(我还尝试了最后一个 vc++ 编译器“2013 年 11 月 CTP”)

我也应该在 MS Connect 上报告吗?

编辑

根据评论,我使用原始 int 数组而不是向量进行了相同的测试,因此不涉及迭代器类,仅涉及原始指针。

现在除了两个“基于范围的模拟”循环外,所有循环都被矢量化了。

编译器说这是由于“501”的原因:

归纳变量不是局部的;或上限不是循环不变的。

我不明白发生了什么...

0 投票
3 回答
2876 浏览

c++ - C++:二叉搜索树 end() 迭代器

我有 BST 的基本(无随机化、排序等)实现。我想添加迭代器实现并使 BST 适用于基于范围的 for 循环。所以我需要 begin()、end() 成员函数和迭代器递增。

我了解 begin() 应该做什么-将迭代器返回到最左下角的节点,并且该线程讨论了遍历 BST 的不同可能性(=递增迭代器)

但是 end() 应该将迭代器提供给最后一个元素。这是我不明白的实际问题,在 BST 的上下文中这是什么意思?

0 投票
1 回答
1432 浏览

vba - 循环遍历一个excel范围并从范围内填充文本框

我目前正在处理 excel 中的用户表单。它目前从数据库中提取一个列表并将其粘贴到 excel 中,然后在您选择某人姓名时引用该数据以自动填充文本框。

我遇到的问题是我还想自动填充对工作人员将拥有的某些系统的访问权限。基本上,电子表格包含公司内的所有员工以及他们对某些系统的访问权限,该系统由 2 个单元格(系统和权利,K 和 L 列)组成。我已经定义了我希望使用的范围,但我现在被卡住了。

如何让excel循环遍历范围并将每个单元格(例如K2和l2)中的数据“复制并粘贴”到用户表单的文本框中。所以我想要发生的是选择某人的名字,它会自动提取他们的所有访问详细信息并使用该访问和权利自动填充一些文本框。

我拥有的当前代码如下。私人子 cboStaffNumber_Change()

任何帮助将不胜感激。

谢谢

0 投票
1 回答
364 浏览

c++ - 基于 C++ 范围的 For 循环效率

当我第一次开始学习 Java 时,我记得我在想如何在 C++ 中创建一个 for-each 循环。但是,既然已经添加了它们并且我(略微)比以前更聪明,我不得不怀疑它们是否真的更有效率?

有两种情况我很好奇,第一种是传统数组,第二种是动态大小的对象,比如 std::vector。

我预测使用 for 循环迭代传统的固定大小数组会更有效,使用基于范围的循环动态分配的存储会更快。

0 投票
3 回答
296 浏览

vba - 如何在带有嵌套 If 循环的 Excel VBA For 循环中提高性能?

这是我的第一篇文章,所以如果我需要进行任何更改,请告诉我。

我找到了一些优化循环的方法示例,但我似乎无法将它们中的任何一个有效地应用于我的代码。我要做的是在单列中循环大约 170 个单元格,并根据单元格值是否为 0 隐藏或显示整行。

我希望每次激活某些工作表时都运行代码。现在这段代码运行大约需要 4 秒。似乎它应该比这快得多!这就是我来这里寻求帮助的原因。

这是我正在使用的代码(FormatSheet 返回一个 BOOLEAN,其中 True 表示可以在此表上执行此代码,而 False 表示跳过在此表上执行此代码: