在此代码中:
string s = "hello";
for(auto i : s)
{
i = 'p';
cout<<i<<'\n';
}
cout<<s<<endl;
输出将是:
p
p
p
p
p
hello
因此,当使用i
来引用字符串s
中的下一个元素时,它不是迭代器而是解引用的迭代器?
如果是auto &i
,则肯定会更改字符串s
的值,指出它是取消引用的迭代器。正确吗?
答案 0 :(得分:-1)
所以当我用来引用字符串s中的下一个元素时,它不是迭代器而是解引用的迭代器?
种类。
i
复制s
中迭代器位置的值。这不是参考。在大多数使用情况下,i
值预计不会更改,那么您可以使用:
for(const auto& i : s)
如果它是自动&i,则肯定会更改string s的值,指出它已被取消引用迭代器。正确吗?
是的。 for(auto& i : s)
,使s
由于i
而可修改。