const_iterator 类

class QLinkedList::const_iterator

QLinkedList::const_iterator 类提供了为 QLinkedList 提供的 STL 风格 const 迭代器。更多...

公共函数

const_iterator()
const_iterator(QLinkedList::iterator other)
booloperator!=(const QLinkedList::const_iterator &other) const
const T &operator*() const
QLinkedList::const_iteratoroperator+(int j) const
QLinkedList::const_iterator &operator++()
QLinkedList::const_iteratoroperator++(int)
QLinkedList::const_iterator &operator+=(int j)
QLinkedList::const_iteratoroperator-(int j) const
QLinkedList::const_iterator &operator--()
QLinkedList::const_iteratoroperator--(int)
QLinkedList::const_iterator &operator-=(int j)
const T *operator->() const
booloperator==(const QLinkedList::const_iterator &other) const

详细描述

QLinkedList 既有 STL 风格的迭代器,又有 Java 风格的迭代器。《STL 风格的迭代器》更底层,使用起来更繁琐;但它们稍微快一些,并且对于已经熟悉 STL 的开发者来说,具有熟悉性的优势。

QLinkedList::const_iterator 允许您迭代一个 QLinkedList。如果您在迭代过程中要修改 QLinkedList,您必须使用 QLinkedList::iterator 而不是 QLinkedList::const_iterator。通常,在非 const QLinkedList 上使用 QLinkedList::const_iterator 也是好的实践,除非您需要通过迭代器来更改 QLinkedList。Const 迭代器稍微快一点,可以提高代码的可读性。

默认的QLinkedList::const_iterator 构造函数创建一个未初始化的迭代器。在使用它进行迭代之前,您必须使用QLinkedList::constBegin(),QLinkedList::constEndQLinkedList::insert()等函数对其进行初始化。下面是一个典型的循环,用于打印列表中存储的所有项目

QLinkedList<QString> list;
list.append("January");
list.append("February");
...
list.append("December");

QLinkedList<QString>::const_iterator i;
for (i = list.constBegin(); i != list.constEnd(); ++i)
    cout << *i << Qt::endl;

STL风格迭代器可以用作通用算法的参数。例如,以下是如何在列表中查找项目的方法

QLinkedList<QString> list;
...
QLinkedList<QString>::const_iterator it = std::find(list.constBegin(),
                                                    list.constEnd(), "Joel");
if (it != list.constEnd())
    cout << "Found Joel" << Qt::endl;

可以在同一个列表上使用多个迭代器。如果您向列表中添加项目,现有迭代器将保持有效。如果您从列表中删除项目,指向已删除项目的迭代器将变成悬空迭代器。

警告:在隐式共享容器上的迭代器不与STL迭代器完全相同。在迭代器在该容器上激活时,请避免复制容器。有关更多信息,请参阅隐式共享迭代器问题

另请参阅QLinkedList::iteratorQLinkedListIterator

成员函数文档

const_iterator::const_iterator()

创建一个未初始化的迭代器。

在没有初始化迭代器的情况下,不应调用如operator*()和operator++()这样的函数。在使用之前,应使用operator=()为其赋值。

另请参阅QLinkedList::constBegin() 和 QLinkedList::constEnd

const_iterator::const_iterator(QLinkedList<T>::iterator other)

创建other的副本。

bool const_iterator::operator!=(const QLinkedList<T>::const_iterator &other) const

如果other指向与该迭代器不同的项目则返回true;否则返回false

另请参阅operator==

const T &const_iterator::operator*() const

返回对当前项目的引用。

另请参阅operator->

QLinkedList<T>::const_iterator const_iterator::operator+(int j) const

返回一个迭代器,该迭代器指向此迭代器前方第j个位置的项目(如果j为负值,迭代器向后移动)。

对于大的j值,此操作可能很慢。

另请参阅operator-

QLinkedList<T>::const_iterator &const_iterator::operator++()

前缀++运算符(++it)将迭代器向前移动到列表中的下一个项目,并返回对新当前项目的迭代器。

QLinkedList<T>::constEnd()上调用此函数会导致未定义的结果。

另请参阅operator--

QLinkedList<T>::const_iterator const_iterator::operator++(int)

这是一个重载函数。

后缀 ++ 操作符(it++)将迭代器移动到列表中的下一个项目,并返回对先前当前项的迭代器。

QLinkedList<T>::const_iterator &const_iterator::operator+=(int j)

将迭代器向前移动 j 个项目。(如果 j 为负数,则迭代器向后移动。)

对于大的j值,此操作可能很慢。

另请参阅 operator-=() 和 operator+()。

QLinkedList<T>::const_iterator const_iterator::operator-(int j) const

此函数返回一个迭代器,它指向从本迭代器反向 j 个位置的项目。(如果 j 为负数,则迭代器向前移动。)

对于大的j值,此操作可能很慢。

另请参阅 operator+()。

QLinkedList<T>::const_iterator &const_iterator::operator--()

前缀 – 操作符(--it)使之前的项目成为当前项目,并返回对新当前项目的迭代器。

QLinkedList::begin() 上调用此函数会导致未定义的结果。

另请参阅 operator++()。

QLinkedList<T>::const_iterator const_iterator::operator--(int)

这是一个重载函数。

后缀 – 操作符(it--)使之前的项目成为当前项目,并返回对先前当前项的迭代器。

QLinkedList<T>::const_iterator &const_iterator::operator-=(int j)

使迭代器向后移动 j 个项目。(如果 j 为负数,则迭代器向前移动。)

对于大的j值,此操作可能很慢。

另请参阅 operator+=() 和 operator-()。

const T *const_iterator::operator->() const

返回当前项的指针。

另请参阅 operator*()。

bool const_iterator::operator==(const QLinkedList<T>::const_iterator &other) const

如果 other 指向与该迭代器相同的项,则返回 true;否则返回 false

另请参阅 operator!=()。

© 2024 Qt公司有限公司。本文档中的文档贡献是各自所有者的版权。此处提供的文档根据自由软件基金会发布的《GNU自由文档许可证第1.3版》的条款进行许可。Qt及其标志是芬兰和/或其他国家的Qt公司有限公司的商标。所有其他商标均为其各自所有者的财产。