const_iterator 类

QSet::const_iterator

QSet::const_iterator 类为 QSet 提供了 STL 风格的常量迭代器。详细信息...

公共类型

公共函数

const_iterator()
const_iterator(const QSet<T>::iterator &其他)
const_iterator(const QSet<T>::const_iterator &其他)
booloperator!=(const QSet<T>::const_iterator &其他) const
const T &operator*() const
QSet<T>::const_iterator &operator++()
QSet<T>::const_iteratoroperator++(int)
const T *operator->() const
QSet<T>::const_iterator &operator=(const QSet<T>::const_iterator &其他)
booloperator==(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::endQSet::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::iteratorQSetIterator

成员类型文档

const_iterator::iterator_category

表示这些迭代器是双向迭代器的std::bidirectional_iterator_tag的同义词。

成员函数文档

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的商标。所有其他商标均为各自所有者的财产。