为啥 QVector 的迭代器使用前缀增加而后缀在内部减少?

Posted

技术标签:

【中文标题】为啥 QVector 的迭代器使用前缀增加而后缀在内部减少?【英文标题】:Why is QVector's iterator using prefixed increase but postfix decrease internally?为什么 QVector 的迭代器使用前缀增加而后缀在内部减少? 【发布时间】:2016-01-11 14:26:00 【问题描述】:

我目前正在为内部数据结构实现迭代器,并查看了 QVector 如何实现它的迭代器。我不明白为什么 QTypedArrayData::iterator 实现了它的 ++ 和 -- 运算符,例如:

T *i;
inline iterator &operator++()  ++i; return *this; 
inline iterator &operator--()  i--; return *this; 

我不明白的是两者之间的差异:为什么它使用后缀减量运算符?

感谢您的澄清!

【问题讨论】:

我也不明白,所以我猜 - 没有理由。或者只是一个错字。 【参考方案1】:

您缺乏理解意味着期望两者之间存在任何实际差异,并且编码是故意以这种方式完成的。这种期望是合理的,但却是不正确的。你可以用任何一种方式编写这些操作,它们的工作原理是一样的。 可能对复制/移动成本高昂的非 POD 类型很重要,但这里的情况并非如此。 过去在 15 到 20 年前对那个时代的糟糕编译器很重要。谢天谢地,我们不必再处理 VS6 了 :)

【讨论】:

正如我所想。感谢您的澄清。

以上是关于为啥 QVector 的迭代器使用前缀增加而后缀在内部减少?的主要内容,如果未能解决你的问题,请参考以下文章

QT迭代器 QVector<int>::iterator it;

为啥我不能增加 std::unordered_map 迭代器?

如何在rust中迭代str或String的前缀和后缀?

带有向量迭代器的程序中的分段错误

如何在 rust 中迭代 vec 或 slice 的前缀或后缀?

为啥在 C 中前缀递增 (++x) 比后缀递增 (x++) 快? [复制]