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

标签 c++ qt qvector

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

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

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

感谢任何澄清!

最佳答案

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

关于c++ - 为什么 QVector 的迭代器内部使用前缀增加而后缀减少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34723858/

相关文章:

c++ - gcc 预编译头文件 : pragma once in main file

c++ - QML TreeView : How to get QModelIndex of childs

c++ - 重新访问QList与QVector

c++ - Qt 线程出错

c++ - 如何找到事件的 QMainWindow 实例?

c++ - 如何创建 QVector 或其他可以包含不同小部件的容器?

c++ - inotify 描述符上的读取被永远阻塞

c++ - 套接字和文件推荐的缓冲区大小

c++ - 用于 double 和单精度类型的通用对称对 C++

c++ - QNetworkRequest 返回 null