【发布时间】:2018-04-10 14:26:21
【问题描述】:
我正在迭代一个双向数据结构。我可以使用 (++, --) 或 (std::prev,std::next,std::advance) 来实现。以后使用比其他有优势吗?
【问题讨论】:
-
请更具体一点:容器/迭代器到底是什么?
-
@Sumit Jha 有时它们不可互换。例如比较 auto next = std::next( first );并且自动下一个 = ++first;
-
主要是它们不等价。但这就是说
std::prev会对自然不允许朝那个方向迭代的容器做坏事,--itr在这样的容器上不会编译。所以我会使用后者。 -
@Bathsheba
std::prev不会在底层使用operator--,因此如果迭代器不是双向的,也无法编译?