我有一个向量,我正在使用迭代器修改它的内容。如果满足某些条件,我需要修改向量中下一个元素的内容。我认为以下内容可行:
*(it + 1)++;
这对我来说很有意义,因为我已经能够使用条件it != vec.end() - 1
告诉循环停止一个结尾。它似乎对容器的内容没有任何影响,所以我选择了以下内容:
++it;
*it += 1;
--it;
这是前一行的三行,我认为它是一个黑客。有一个更好的方法吗?为了能够增加向量中的下一个元素,我缺少什么技巧?
答案 0 :(得分:2)
你的意思是:
(*(it + 1))++;
或++*(it + 1).
这是一个优先问题,类似于*p++
递增指针的方式,而不是指向的值。
或者,对于随机访问迭代器,您可以编写it[1]++;
或++it[1];
。
除非您需要后增量属性,否则通常首选使用预增量。这是因为后递增按值返回,因此如果对象具有昂贵的复制过程但您实际上不需要复制,那么您浪费时间制作副本。
答案 1 :(得分:1)
你正在创建一个指针并递增它。 取消引用迭代器然后递增。
(*(it + 1))++;
或
*(it + 1) += 1;