我有一个 vector ,我正在使用迭代器修改它的内容。如果满足某些条件,我需要修改 vector 中下一个元素的内容。我认为以下方法可行:
*(it + 1)++;
这对我来说很有意义,因为我已经能够使用条件 it != vec.end() - 1
告诉循环在结束前停止。它似乎对容器的内容没有任何影响,所以我决定采用以下方法:
++it;
*it += 1;
--it;
与上一行相差三行,我认为这是一个 hack。有一个更好的方法吗?我缺少能够递增 vector 中的下一个元素的技巧是什么?
最佳答案
你的意思是:
(*(it + 1))++;
或++*(it + 1)。
这是一个优先级问题,类似于*p++
如何递增指针,而不是递增指向的值。
或者,对于随机访问迭代器,您可以编写 it[1]++;
或 ++it[1];
。
除非您需要后增量的属性,否则通常首选使用前增量。这是因为后增量按值返回,所以如果对象有一个昂贵的复制过程但你实际上并不需要复制,那么你就浪费了时间进行复制。
关于c++ - 用迭代器修改容器的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26210655/