引用引用多个对象,怎么可能? 我在阅读的一本C++书籍: int v[] = {0,1,2,3,4,5,6,7,8,9}; for (auto& x : v)
当书中的下一行写着: “。无法在初始化后引用其他对象…” x指的是v的所有对象,它是如何工作的 x指的是v的所有对象 不是同时。每次通过循环引用引用多个对象,怎么可能? 我在阅读的一本C++书籍: int v[] = {0,1,2,3,4,5,6,7,8,9}; for (auto& x : v),c++,c++11,C++,C++11,当书中的下一行写着: “。无法在初始化后引用其他对象…” x指的是v的所有对象,它是如何工作的 x指的是v的所有对象 不是同时。每次通过循环x时,都有一个新的局部变量,它引用单个数组元素 在伪代码中,它类似于 for (int* it = std::begin(v); it != std::end(v); ++it) { int& x = *it; // new local variable // ... } 有关详细信息,请参阅此处给出的 相当于 { aut
x
时,都有一个新的局部变量,它引用单个数组元素
在伪代码中,它类似于
for (int* it = std::begin(v); it != std::end(v); ++it)
{
int& x = *it; // new local variable
// ...
}
有关详细信息,请参阅此处给出的 相当于
{
auto && __range = range_expression ;
auto __begin = begin_expr ;
auto __end = end_expr ;
for ( ; __begin != __end; ++__begin) {
range_declaration = *__begin;
loop_statement
}
}
这里的
range\u声明
是您的auto&x
,它被初始化为在每次迭代中引用每个元素,而不是重新绑定相同的引用。@DanielTrugman与this@PasserBy我一秒钟后就意识到了这一点。我立即重新标记。
{
auto && __range = range_expression ;
auto __begin = begin_expr ;
auto __end = end_expr ;
for ( ; __begin != __end; ++__begin) {
range_declaration = *__begin;
loop_statement
}
}