#include <bits/stdc++.h>
int main () {
std::string foo = "string_1";
std::string bar = "string_2";
std::vector<std::string> myvector;
myvector.push_back (foo);
myvector.push_back (std::move(bar));
for (std::string x:myvector)
std::cout << x << '\n' ;
}
当我交换
时,该代码的不同之处 for (std::string x:myvector)
有关?
for (std::string& x:myvector)
我猜我有很多地方可以找到,但我不知道这个措施的名称是什么,所以我不知道我是什么应该搜索。如果它对你来说更容易,那么链接到解释就足够了。
编辑:
它之间的差异是什么:
for(auto x:my_vector)
for(auto& x:my_vector)
for(auto&& x:my_vector)
答案 0 :(得分:2)
'&amp;'是什么课后名字是什么意思?
&符号是声明中类型的一部分,表示该类型是引用。引用是一种间接形式,类似于指针。
之间的差异是什么:
for(auto x:my_vector)
循环变量是非引用。它将包含容器中对象的副本。
for(auto& x:my_vector)
循环变量是左值引用。由于变量引用容器中的对象,因此可以通过该引用修改它们。这也避免了复制对象,如果副本很昂贵,这可能是有利的。
for(auto&& x:my_vector)
循环变量是一个通用引用。这意味着它将是一个左值或右值引用,具体取决于取消引用容器的迭代器时返回的类型。据我所知,只有少数几个不起眼的案例,这是有用的。你可能永远都不需要它。