用迭代器修改容器的内容

时间:2014-10-06 05:52:48

标签: c++ c++11 vector iterator

我有一个向量,我正在使用迭代器修改它的内容。如果满足某些条件,我需要修改向量中下一个元素的内容。我认为以下内容可行:

*(it + 1)++;

这对我来说很有意义,因为我已经能够使用条件it != vec.end() - 1告诉循环停止一个结尾。它似乎对容器的内容没有任何影响,所以我选择了以下内容:

++it;
*it += 1;
--it;

这是前一行的三行,我认为它是一个黑客。有一个更好的方法吗?为了能够增加向量中的下一个元素,我缺少什么技巧?

2 个答案:

答案 0 :(得分:2)

你的意思是:

(*(it + 1))++;

++*(it + 1).这是一个优先问题,类似于*p++递增指针的方式,而不是指向的值。

或者,对于随机访问迭代器,您可以编写it[1]++;++it[1];

除非您需要后增量属性,否则通常首选使用预增量。这是因为后递增按值返回,因此如果对象具有昂贵的复制过程但您实际上不需要复制,那么您浪费时间制作副本。

答案 1 :(得分:1)

你正在创建一个指针并递增它。 取消引用迭代器然后递增。

(*(it + 1))++;

*(it + 1) += 1;