C++ for(auto x : str) 和 for(auto &x : str)的区别
For(auto x : str)#include<bits/stdc++.h>using namespace std;int main(){string str = "Hello";for(auto x : str){// 利用x遍历容器str中的每一个值x = tolower(x);}cout<<str;//仍然是"Hello"}For(auto &x : st
·
For(auto x : str)
是利用x
生成str
中每一个值的复制,对x
的赋值不会影响到原容器。
For(auto &x : str)
是利用x
生成str
中每一个值的引用,对x
的操作会影响到原容器。
例子1:For(auto x : str)
#include<bits/stdc++.h>
using namespace std;
int main(){
string str = "Hello";
for(auto x : str){// 利用x遍历容器str中的每一个值
x = tolower(x);
}
cout<<str;//仍然是"Hello"
}
例子2:For(auto &x : str)
#include<bits/stdc++.h>
using namespace std;
int main(){
string str = "Hello";
for(auto &x : str){// 这里加了&,表示对x的操作可以影响到容器str
x = tolower(x);
}
cout<<str;//变成小写"hello"
}
总结: &x
对原容器有影响,x
对原容器没有影响
更多推荐
已为社区贡献1条内容
所有评论(0)