为啥 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 迭代器?