const_iterator 类
类 QSet::const_iteratorQSet::const_iterator 类为 QSet 提供了 STL 风格的常量迭代器。详细信息...
公共类型
公共函数
const_iterator() | |
const_iterator(const QSet<T>::iterator &其他) | |
const_iterator(const QSet<T>::const_iterator &其他) | |
bool | operator!=(const QSet<T>::const_iterator &其他) const |
const T & | operator*() const |
QSet<T>::const_iterator & | operator++() |
QSet<T>::const_iterator | operator++(int) |
const T * | operator->() const |
QSet<T>::const_iterator & | operator=(const QSet<T>::const_iterator &其他) |
bool | operator==(const QSet<T>::const_iterator &其他) const |
详细说明
QSet 具备 STL 风格迭代器 和 Java 风格迭代器。STL 风格的迭代器更底层且使用起来较为繁琐;然而,它们略快一些,对于已经熟悉 STL 的开发者来说,有熟悉性的优势。
QSet<Key, T>::const_iterator 允许您遍历一个 QSet。如果您在遍历的过程中想要修改 QSet,则必须使用 QSet::iterator。通常,对于非常量 QSet,也建议使用 QSet::const_iterator,除非您需要通过迭代器修改 QSet。常量迭代器略快,且可以提高代码可读性。
默认的 QSet::const_iterator 构造函数创建了一个未初始化的迭代器。在开始遍历之前,您必须使用类似 QSet::begin()、QSet::end 或 QSet::insert() 的函数进行初始化。以下是一个典型的循环,用于打印存储在集合中的所有项目:
QSet<QString> set = {"January", "February", ... "December"}; // i is QSet<QString>::const_iterator for (auto i = set.cbegin(), end = set.cend(); i != end; ++i) qDebug() << *i;
STL 风格的迭代器可以用作 通用算法 的参数。例如,以下是使用 qFind() 算法在集合中查找项的方式:
QSet<QString> set; ... const auto predicate = [](const QString &s) { return s.compare("Jeanette", Qt::CaseInsensitive) == 0; }; QSet<QString>::const_iterator it = std::find_if(set.cbegin(), set.cend(), predicate); if (it != set.constEnd()) cout << "Found Jeanette" << endl;
警告: 在隐式共享容器上的迭代器并不完全像STL迭代器那样工作。当迭代器在此容器上活动时,请避免复制容器。更多信息,请参阅隐式共享迭代器问题。
另请参阅 QSet::iterator 和 QSetIterator。
成员函数文档
const_iterator::const_iterator()
构造一个未初始化的迭代器。
不应在未初始化的迭代器上调用如operator*()和operator++()这样的函数。在使用之前,请使用operator=()将值赋予它。
另请参阅 QSet::begin() 和 QSet::end。
const_iterator::const_iterator(const QSet<T>::const_iterator &other)
构造other的一个副本。
QSet<T>::const_iterator &const_iterator::operator=(const QSet<T>::const_iterator &other)
将other赋予此迭代器。
const T &const_iterator::operator*() const
返回当前元素的引用。
另请参阅 operator->。
const T *const_iterator::operator->() const
返回当前元素的指针。
另请参阅 operator*。
bool const_iterator::operator==(const QSet<T>::const_iterator &other) const
如果other指向与当前迭代器相同的元素,则返回true
;否则返回false
。
另请参阅 operator!=。
bool const_iterator::operator!=(const QSet<T>::const_iterator &other) const
如果other指向与当前迭代器不同的元素,则返回true
;否则返回false
。
另请参阅 operator==。
QSet<T>::const_iterator &const_iterator::operator++()
前缀++运算符(代码中的++it
)将迭代器向前推进到集合中的下一个元素,并返回对新当前元素的迭代器。
在QSet<T>::constEnd()上调用此函数会导致未定义的结果。
QSet<T>::const_iterator const_iterator::operator++(int)
这是一个重载函数。
后缀++运算符(it++
)将迭代器移动到集合中的下一个项目,并返回对先前当前项目的迭代器。
const_iterator::const_iterator(const QSet<T>::iterator &other)
这是一个重载函数。
构造other的一个副本。
© 2024 The Qt Company Ltd. 本文档中的文档贡献属于其各自的版权所有者。本文档根据由自由软件基金会发布并采纳的 GNU自由文档许可证版本1.3 的条款许可。Qt和相应的标志是芬兰以及世界其他地区的The Qt Company Ltd的商标。所有其他商标均为各自所有者的财产。