问题标签 [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 投票
4 回答
269 浏览

c++ - 如何延长范围表达式中临时变量的生命周期?

在使用 ranged-for 循环时,我得到了悬空引用。考虑以下 C++14 表达式(下面的完整示例程序):

它的输出是:

显然有些事情出了问题。轮子在其生命周期之外被访问,结果为 0,而不是预期的 2。

一个简单的解决方法是为Bikein引入一个变量main。但是,我不控制mainor中的代码Wheel。我只能更改 struct Bike

有没有办法只通过改变来修复这个例子Bike

一个成功的解决方案要么在编译时失败,要么计算 2 个充气轮胎并且在其生命周期之外不接触任何对象。

附录:编译准备好的源码

0 投票
1 回答
415 浏览

c++ - 基于范围的for循环的奇怪问题

我正在我的 C++ 面向对象 1 类中学习向量,我们已经引入了基于范围的 for 循环的概念。我决定单独练习基于范围的 for 循环,以便习惯语法,但我遇到了一个奇怪的问题。

当我运行上面的代码时,我的输出如下。

2 3 4 5 6 7 8 9 0 1 按任意键继续...

我的输出应该是

1 2 3 4 5 6 7 8 9 0 按任意键继续...

谁能告诉我为什么我的第一个索引被跳过?我有视觉工作室 2013 专业版。

0 投票
1 回答
1676 浏览

vba - command button click on Userform enter textbox to cell, then loop columns per click

I'm very new to VBA. I've created a userform that has textboxes that need to transfer textbox data to a range of cells. The range I need it to work on is Columns for example C8:AG8 so the data in the text box once entered and clicked will loop to the next column to repeat the process. I need the loop to work from column to column, not row to row. Thank you.

So far I have the below however, This only populates one time:

0 投票
3 回答
2770 浏览

c++ - C++ 基础:基于范围的 for 循环和将 C 风格的数组传递给函数

我正在尝试学习 C++,但我无法在这里围绕这段代码,尽管花了很多时间寻找答案:

在 printArray1 中,我们接收到一个对大小为 3 的数组的引用的参数。这是否意味着我们正在接收整个数组的地址,或者我们只是接收到大小为 3 的数组中第一个元素的地址?另外,这个参数是如何传递给循环的?

在 printArray2 中,我们接收到指向数组中第一个元素的指针,对吗?换句话说,我们也收到了一个地址,就像在 printArray1 中一样?因此,此函数中基于范围的 for 循环将无法编译,因为我们没有数组的大小数据,对吧?

最后,当我们尝试在 main 中使用基于范围的 for 循环进行打印时,我们传递给循环的究竟是什么?它是指向数组中第一个元素的指针吗,如果是,如果 printArray2 中的 for 循环不接受指针,为什么它会编译?

我对 C++ 的理解还很初级,所以非常感谢您的帮助,谢谢!

0 投票
1 回答
75 浏览

python - 我的 Python for 循环执行 5005 次,但它意味着执行 100 次

我的输出是 5005 个序列号,但我只想要 100 个。目前它将 5005 个序列号写入一个文件,我希望它写入 100 个序列号。这个程序将用于生成序列号,以便在另一个脚本中进行最安全的登录,请帮助:)

0 投票
1 回答
341 浏览

c++ - 为什么我的自定义迭代器需要基于范围的 for 循环中的调用运算符?

链接到mcve

我们将矩阵定义为可按行和按列迭代。下面是逐行迭代器的实现:

遍历我们的矩阵是使用Range如下定义的对象实现的:

这基本上是我们的使用代码:

我编译了上面的 MCVE 并得到了以下编译器错误:

  • Visual Studio 2013(全部在第 42 行):

    /li>
  • GCC 5.1(第 42 行):

    /li>
  • Clang 3.7.0(第 42 行):

    /li>

所有编译器都在搜索调用运算符。为什么? 据我了解,上述迭代器为范围循环提供了最小接口,并且在使用来自cppreference.com的语法等价代码时可以工作。

0 投票
0 回答
40 浏览

c++ - 基于范围的 for 循环不使用抽象类的向量进行编译

我有这段代码:

但它不会与此错误一起编译:

错误:无法分配抽象类型“MyAbstract”的对象

Visual Studio 2015 错误:

无法实例化抽象类

这是在线代码:http ://cpp.sh/3etnq

我在这里想念什么?!这有效:

0 投票
2 回答
1115 浏览

c++ - 基于向量获取范围内的项目索引

C++11 引入了基于范围的 for 循环,该循环在内部使用 (const) 迭代器实现,因此:

基本上相当于更详细(是的,可以使用 简化auto):

然而,通常人们也需要该项目的索引。第二种方法很简单:

在基于范围的for情况下,它并不是那么简单。但是我想知道这是否可以完全避免迭代器的可移植解决方案:

const版本将相同,但需要注意不要将非const容器与 const 引用混合,这可能并不总是很明显。)

显然,这依赖于几个假设:

  • vector 的迭代器只是对项目的引用(可能在标准中?)

  • 容器保证连续(std::vector是...)

  • 基于范围的内部实现(也可能在标准中)

0 投票
3 回答
165 浏览

c++ - 是否可以在 C++11 中使用强制转换作为“数组切片”

我有一些由专用硬件填充的共享内存。它被声明为结构数组,例如:

我正在(重新)学习 C++,并想使用 C++11 的 ranged for 循环来迭代数据。

但是:数组的最后一个维度 ( data[10]),我只关心前 4 个元素。有没有办法获取数据片段并在 for() 语句中使用它?

喜欢

有没有办法在最里面的 for 循环中使用强制转换,这样看起来只有 4 个元素?数据的地址很重要,因为我稍后将使用指针直接引用它。

0 投票
8 回答
758 浏览

c++ - 内部函数的范围错误

我在 C++ 中的范围内遇到了一些麻烦。我正在尝试使用它在 int 数组 (int[]) 上显示元素,当我在主函数上执行此操作时,它工作得非常好,例如:

我得到了我想要的和预期的输出,即:

但是当我尝试在函数内部使用 ranged for 时,事情变得有点奇怪,例如,我遇到了这段代码的问题:

对我来说,这与我在 main 内部所做的相同,并且使用正常的 for 完全可以正常工作。奇怪的错误如下:

我想知道为什么会发生这个错误,我认为这可能发生的原因是,因为我是数组的指针表示,所以丢失了一些信息,但是为什么会丢失这些信息我不知道。有人深入了解吗?我还寻找了这种替代解决方案:

哪个工作正常,但如果我使用类似的东西:

我得到错误:

为什么会这样?有没有不使用模板格式的简单解决方案?有没有一种方法可以使用参数作为传递数组和隐式大小信息的方式?