C++改变集合元素的值

来源:互联网 发布:百度新闻的评论 知乎 编辑:程序博客网 时间:2024/06/08 11:29


在c++中,list 或者vector 遍历取值的时候有好几种方式,但是在遍历的时候改变集合元素中的值,如果用foreach就会出问题,例:

int main()
{
vector<string> aa;
aa.push_back("11");


for (auto item : aa) {
item[0] = '2';
}
for (auto item : aa) {
cout << item[0] << endl;  //结果是1  没有改变
}


for (vector<string>::iterator it = aa.begin(), end = aa.end(); it != end; it++) {
it->at(0) = '3';
}
for (auto item : aa) {
cout << item[0] << endl;//结果是3 改变了值
}


for (int i = 0; i < aa.size(); i++) {
aa.at(i)[0] = '4';
}
for (auto item : aa) {
cout << item[0] << endl;//结果是3 改变了值
}

如果像java一样 用(for Object o : List<Object>)这样的循环,取到的不是集合中的元素,因此是不会改变元素内容的

list同理。

原创粉丝点击