注意:
- 没有引用&,只能读取容器中的值,但不能更改
- 有引用&,可以读取容器中的值,也可以更改
vector和map都可以,下面以vector为例
#include <iostream>
#include <vector>
int main()
{
std::vector<std::string> vecTest;
vecTest.push_back("1");
vecTest.push_back("2");
vecTest.push_back("3");
std::cout << "noquote: " << std::endl;
for (auto iter : vecTest)
{
iter = "5";
}
for (auto iter1 : vecTest)
{
std::cout << "vecTest: " << iter1 << std::endl;
}
system("pause");
return 0;
}
结果
我们可以看出,vector中的内容没有改变,也就是说只能读取容器中的值,但不能更改,要怎样即能读取,又能更改呢。其实很简单,只需要加一个引用&就可以了:
#include <iostream>
#include <vector>
int main()
{
std::vector<std::string> vecTest;
vecTest.push_back("1");
vecTest.push_back("2");
vecTest.push_back("3");
std::cout << "quote: " << std::endl;
for (auto &iter : vecTest)
{
iter = "5";
}
for (auto iter1 : vecTest)
{
std::cout << "vecTest: " << iter1 << std::endl;
}
system("pause");
return 0;
}
结果
我们可以看出,容器内的值都被更改了