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



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

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

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

感谢您的澄清!

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

最新更新