问题标签 [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.
c++ - 如何延长范围表达式中临时变量的生命周期?
在使用 ranged-for 循环时,我得到了悬空引用。考虑以下 C++14 表达式(下面的完整示例程序):
它的输出是:
显然有些事情出了问题。轮子在其生命周期之外被访问,结果为 0,而不是预期的 2。
一个简单的解决方法是为Bike
in引入一个变量main
。但是,我不控制main
or中的代码Wheel
。我只能更改 struct Bike
。
有没有办法只通过改变来修复这个例子Bike
?
一个成功的解决方案要么在编译时失败,要么计算 2 个充气轮胎并且在其生命周期之外不接触任何对象。
附录:编译准备好的源码
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 专业版。
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:
c++ - C++ 基础:基于范围的 for 循环和将 C 风格的数组传递给函数
我正在尝试学习 C++,但我无法在这里围绕这段代码,尽管花了很多时间寻找答案:
在 printArray1 中,我们接收到一个对大小为 3 的数组的引用的参数。这是否意味着我们正在接收整个数组的地址,或者我们只是接收到大小为 3 的数组中第一个元素的地址?另外,这个参数是如何传递给循环的?
在 printArray2 中,我们接收到指向数组中第一个元素的指针,对吗?换句话说,我们也收到了一个地址,就像在 printArray1 中一样?因此,此函数中基于范围的 for 循环将无法编译,因为我们没有数组的大小数据,对吧?
最后,当我们尝试在 main 中使用基于范围的 for 循环进行打印时,我们传递给循环的究竟是什么?它是指向数组中第一个元素的指针吗,如果是,如果 printArray2 中的 for 循环不接受指针,为什么它会编译?
我对 C++ 的理解还很初级,所以非常感谢您的帮助,谢谢!
python - 我的 Python for 循环执行 5005 次,但它意味着执行 100 次
我的输出是 5005 个序列号,但我只想要 100 个。目前它将 5005 个序列号写入一个文件,我希望它写入 100 个序列号。这个程序将用于生成序列号,以便在另一个脚本中进行最安全的登录,请帮助:)
c++ - 为什么我的自定义迭代器需要基于范围的 for 循环中的调用运算符?
链接到mcve。
我们将矩阵定义为可按行和按列迭代。下面是逐行迭代器的实现:
遍历我们的矩阵是使用Range
如下定义的对象实现的:
这基本上是我们的使用代码:
我编译了上面的 MCVE 并得到了以下编译器错误:
Visual Studio 2013(全部在第 42 行):
/li>GCC 5.1(第 42 行):
/li>Clang 3.7.0(第 42 行):
/li>
所有编译器都在搜索调用运算符。为什么? 据我了解,上述迭代器为范围循环提供了最小接口,并且在使用来自cppreference.com的语法等价代码时可以工作。
c++ - 基于范围的 for 循环不使用抽象类的向量进行编译
我有这段代码:
但它不会与此错误一起编译:
错误:无法分配抽象类型“MyAbstract”的对象
Visual Studio 2015 错误:
无法实例化抽象类
这是在线代码:http ://cpp.sh/3etnq
我在这里想念什么?!这有效:
c++ - 基于向量获取范围内的项目索引
C++11 引入了基于范围的 for 循环,该循环在内部使用 (const) 迭代器实现,因此:
基本上相当于更详细(是的,可以使用 简化auto
):
然而,通常人们也需要该项目的索引。第二种方法很简单:
在基于范围的for
情况下,它并不是那么简单。但是我想知道这是否可以完全避免迭代器的可移植解决方案:
(const
版本将相同,但需要注意不要将非const
容器与 const 引用混合,这可能并不总是很明显。)
显然,这依赖于几个假设:
vector 的迭代器只是对项目的引用(可能在标准中?)
容器保证连续(
std::vector
是...)基于范围的内部实现(也可能在标准中)
c++ - 是否可以在 C++11 中使用强制转换作为“数组切片”
我有一些由专用硬件填充的共享内存。它被声明为结构数组,例如:
我正在(重新)学习 C++,并想使用 C++11 的 ranged for 循环来迭代数据。
但是:数组的最后一个维度 ( data[10]
),我只关心前 4 个元素。有没有办法获取数据片段并在 for() 语句中使用它?
喜欢
有没有办法在最里面的 for 循环中使用强制转换,这样看起来只有 4 个元素?数据的地址很重要,因为我稍后将使用指针直接引用它。
c++ - 内部函数的范围错误
我在 C++ 中的范围内遇到了一些麻烦。我正在尝试使用它在 int 数组 (int[]) 上显示元素,当我在主函数上执行此操作时,它工作得非常好,例如:
我得到了我想要的和预期的输出,即:
但是当我尝试在函数内部使用 ranged for 时,事情变得有点奇怪,例如,我遇到了这段代码的问题:
对我来说,这与我在 main 内部所做的相同,并且使用正常的 for 完全可以正常工作。奇怪的错误如下:
我想知道为什么会发生这个错误,我认为这可能发生的原因是,因为我是数组的指针表示,所以丢失了一些信息,但是为什么会丢失这些信息我不知道。有人深入了解吗?我还寻找了这种替代解决方案:
哪个工作正常,但如果我使用类似的东西:
我得到错误:
为什么会这样?有没有不使用模板格式的简单解决方案?有没有一种方法可以使用参数作为传递数组和隐式大小信息的方式?