为什么 QVector 的迭代器内部使用前缀增加而后缀减少?
Why is QVector's iterator using prefixed increase but postfix decrease internally?
我目前正在为内部数据结构实现一个迭代器,并查看了 QVector 如何实现它的迭代器。我不明白为什么 QTypedArrayData::iterator 会实现它的 ++ 和 -- 运算符,例如:
T *i;
inline iterator &operator++() { ++i; return *this; }
inline iterator &operator--() { i--; return *this; }
我不明白的是两者之间的差异:为什么它使用后缀递减运算符?
感谢您的澄清!
您缺乏理解意味着期望两者之间存在任何实际差异,并且编码是有意以这种方式完成的。这种期望是合理的,但却是不正确的。您可以用任何一种方式编写这些操作,它们的工作方式是一样的。它 可能 对 non-POD 昂贵的 copy/move 类型很重要,但这里不是这种情况。在 15-20 年前,它 曾经 对那个时代的可怜的编译器很重要。谢天谢地,我们不必再处理 VS6 了:)
我目前正在为内部数据结构实现一个迭代器,并查看了 QVector 如何实现它的迭代器。我不明白为什么 QTypedArrayData::iterator 会实现它的 ++ 和 -- 运算符,例如:
T *i;
inline iterator &operator++() { ++i; return *this; }
inline iterator &operator--() { i--; return *this; }
我不明白的是两者之间的差异:为什么它使用后缀递减运算符?
感谢您的澄清!
您缺乏理解意味着期望两者之间存在任何实际差异,并且编码是有意以这种方式完成的。这种期望是合理的,但却是不正确的。您可以用任何一种方式编写这些操作,它们的工作方式是一样的。它 可能 对 non-POD 昂贵的 copy/move 类型很重要,但这里不是这种情况。在 15-20 年前,它 曾经 对那个时代的可怜的编译器很重要。谢天谢地,我们不必再处理 VS6 了:)