关于迭代器,血的教训

对容器内元素进行修改,共有3中方法:

vector<int> vec_a;
vec_a.push_back(123);
vec_a.push_back(123);
vec_a.push_back(123);
vec_a.push_back(123);

vec_a[1] = 234;

vec_a.at[1] = 234;

vector<int>::iterator vec_a_iter = vec_a.begin() + 1;
*vec_a_iter = 234;

血的教训就是:在用=的时候,一定要知道对C++来说,很多情况下=是进行赋值,而不像Java一样,取得了对象的引用!

int a = *vec_a_iter;
a = 456;// a 从234 变成456
cout<<a<<endl;
cout<<*vec_a_iter<<endl;

这时候,*vec_a_iter是没有发生变化的。

记住:对容器内元素进行操作,就上面3中方法。如果用迭代器,老老实实的用(*iterator)来操作,不要偷懒!

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注