如果你有一个迭代器vector<int>::iterator i = vector.begin(),i++则将实际的迭代器向下移动.但为什么会这样呢
i = i + 3
给你一个新的迭代器三个门?
模仿人们期望的自然行为+.与以下相同的方式:
int x = 0;
int y = x + 3;
Run Code Online (Sandbox Code Playgroud)
第二行不会改变x,它只是评估值为3.但是,x++ 会修改x.
如果你想推进一个通用的迭代器,你应该使用std::advance(i, 3)(它将i += 3在随机访问迭代器上执行,而i++在任何其他迭代器上执行三次).
| 归档时间: |
|
| 查看次数: |
142 次 |
| 最近记录: |