QLinkedList 类
template <typename T> class QLinkedListQLinkedList 类是一个提供链表的模板类。更多...
头文件 | #include <QLinkedList> |
CMake | find_package(Qt6 REQUIRED COMPONENTS Core5Compat) target_link_libraries(mytarget PRIVATE Qt6::Core5Compat) |
qmake | QT += core5 compat |
- 所有成员列表,包括继承的成员
- QLinkedList 是 隐式共享类 的一部分。
注意: 此类中所有函数都是 可重入的。
公共类型
类 | const_iterator |
类 | iterator |
ConstIterator | |
Iterator | |
const_pointer | |
const_reference | |
const_reverse_iterator | |
difference_type | |
pointer | |
reference | |
reverse_iterator | |
size_type | |
value_type |
公共函数
QLinkedList() | |
QLinkedList(std::initializer_list<T> list) | |
QLinkedList(InputIterator first, InputIterator last) | |
QLinkedList(const QLinkedList<T> &other) | |
QLinkedList(QLinkedList<T> &&other) | |
~QLinkedList() | |
void | append(const T &value) |
T & | back() |
const T & | back() const |
QLinkedList<T>::iterator | begin() |
QLinkedList<T>::const_iterator | begin() const |
QLinkedList<T>::const_iterator | cbegin() const |
QLinkedList<T>::const_iterator | cend() const |
void | clear() |
QLinkedList<T>::const_iterator | constBegin() const |
QLinkedList<T>::const_iterator | constEnd() const |
bool | contains(const T &value) const |
int | count(const T &value) const |
int | count() const |
QLinkedList<T>::const_reverse_iterator | crbegin() const |
QLinkedList<T>::const_reverse_iterator | crend() const |
bool | empty() const |
QLinkedList<T>::iterator | end() |
QLinkedList<T>::const_iterator | end() const |
bool | endsWith(const T &value) const |
QLinkedList<T>::iterator | erase(QLinkedList<T>::iterator pos) |
QLinkedList<T>::iterator | erase(QLinkedList<T>::iterator begin, QLinkedList<T>::iterator end) |
T & | first() |
const T & | first() const |
T & | front() |
const T & | front() const |
QLinkedList<T>::iterator | insert(QLinkedList |
bool | isEmpty() const |
T & | last() |
const T & | last() const |
void | pop_back() |
void | pop_front() |
void | prepend(const T &value) |
void | push_back(const T &value) |
void | push_front(const T &value) |
QLinkedList | rbegin() |
QLinkedList<T>::const_reverse_iterator | rbegin() const |
int | removeAll(const T &value) |
void | removeFirst() |
void | removeLast() |
bool | removeOne(const T &value) |
QLinkedList | rend() |
QLinkedList<T>::const_reverse_iterator | rend() const |
int | size() const |
bool | startsWith(const T &value) const |
void | swap(QLinkedList |
T | takeFirst() |
T | takeLast() |
std::list | toStdList() const |
bool | operator!=(const QLinkedList |
QLinkedList | operator+(const QLinkedList |
QLinkedList | operator+=(const QLinkedList |
QLinkedList | operator+=(const T &value) |
QLinkedList | operator<<(const QLinkedList |
QLinkedList | operator<<(const T &value) |
QLinkedList | operator=(const QLinkedList |
bool | operator==(const QLinkedList |
静态公共成员
QLinkedList | fromStdList(const std::list |
相关非成员
QDataStreamIfHasOStreamOperatorsContainer | operator<<(QDataStream &out, const QLinkedList |
QDataStreamIfHasIStreamOperatorsContainer | operator>>(QDataStream &in, QLinkedList |
详细描述
QLinkedList
QList
- QList>通常是正确的类来使用,它的基于索引的API比QLinkedList的迭代器API更方便,它的项占用相邻的内存位置。它还使可执行文件中的代码更少。
- 如果您需要一个真正的链表,保证在列表中间进行常数时间的插入,并且有项的迭代器而不是索引,请使用QLinkedList。
以下是一个存储整数的QLinkedList示例和一个存储QTime值的QLinkedList示例
QLinkedList<int> integerList; QLinkedList<QTime> timeList;
QLinkedList存储项列表。默认构造函数创建一个空列表。要向列表中插入项,您可以使用操作符<<()
QLinkedList<QString> list; list << "one" << "two" << "three"; // list: ["one", "two", "three"]
如果您想获取链表的第一个或最后一个项目,请使用first()或last()。如果您想从列表的两端移除一个项目,请使用removeFirst()或removeLast()。如果您想要删除列表中给定值的所有出现,请使用removeAll()。
一个常见的需求是从列表中移除第一个或最后一个项目并对它进行一些操作。为此,QLinkedList提供了takeFirst()和takeLast()。以下是一个循环,逐个从列表中移除项目并对其调用delete
。
QLinkedList<QWidget *> list; ... while (!list.isEmpty()) delete list.takeFirst();
QLinkedList的值类型必须是一个可赋值的数据类型。这包括大多数常用的数据类型,但编译器不会让您将QWidget存储为值;相反,存储一个QWidget *。一些函数有额外的要求;例如,contains()和removeAll()期望值类型支持operator==()
。这些要求在每项函数的基础上进行记录。
如果您想在列表的中间插入、修改或删除项,您必须使用迭代器。QLinkedList提供两种迭代器:Java风格的迭代器(QLinkedListIterator和QMutableLinkedListIterator)和STL风格的迭代器(QLinkedList::const_iterator和QLinkedList::iterator)。有关这些类的详细信息,请参阅相关文档。
另请参阅 QLinkedListIterator、QMutableLinkedListIterator和QList。
成员类型文档
QLinkedList::ConstIterator
Qt样式的QLinkedList::const_iterator的同义词。
QLinkedList::Iterator
Qt样式的QLinkedList::iterator的同义词。
QLinkedList::const_pointer
为const T *提供的类型定义。为与STL兼容而提供的。
QLinkedList::const_reference
为const T &提供的类型定义。为与STL兼容而提供的。
QLinkedList::const_reverse_iterator
QLinkedList::const_reverse_iterator类型定义为QLinkedList提供STL样式常量反向迭代器。
它实质上是对std::reverse_iterator<QLinkedList::const_iterator>
的类型定义。
注意:在隐式共享容器上的迭代器不一定像STL迭代器那样工作。当在容器上处于活动状态时,应避免复制容器。更多信息请参阅隐式共享迭代器问题。
另请参阅 QLinkedList::rbegin()、QLinkedList::rend()、QLinkedList::reverse_iterator和QLinkedList::const_iterator。
QLinkedList::difference_type
为ptrdiff_t提供的类型定义。为与STL兼容而提供的。
QLinkedList::pointer
为T *提供的类型定义。为与STL兼容而提供的。
QLinkedList::reference
为 T 类型提供的 Typedef。为了与 STL 兼容而提供。
QLinkedList::reverse_iterator
QLinkedList::reverse_iterator 类型定义为为 QLinkedList 提供了 STL 风格的非 const 反向迭代器。
它只是一个对 std::reverse_iterator
的 typedef。
注意:在隐式共享容器上的迭代器不一定像STL迭代器那样工作。当在容器上处于活动状态时,应避免复制容器。更多信息请参阅隐式共享迭代器问题。
另请参阅 QLinkedList::rbegin(),QLinkedList::rend(),QLinkedList::const_reverse_iterator,和 QLinkedList::iterator。
QLinkedList::size_type
为 int 类型提供的 Typedef。为了与 STL 兼容而提供。
QLinkedList::value_type
为 T 类型提供的 Typedef。为了与 STL 兼容而提供。
成员函数文档
[noexcept]
QLinkedList::QLinkedList()
构造一个空的列表。
QLinkedList::QLinkedList(std::initializer_list<T> list)
从由 list 指定的 std::initializer_list 创建一个列表。
此构造函数仅在编译器支持 C++11 初始化器列表时启用。
template <typename InputIterator, QtPrivate::IfIsInputIterator<InputIterator> = true> QLinkedList::QLinkedList(InputIterator first, InputIterator last)
使用迭代器范围 [first, last] 中的内容构造一个列表。
InputIterator
的值类型必须可以转换为 T
。
QLinkedList::QLinkedList(const QLinkedList<T> &other)
构造 other 的副本。
此操作会在 恒定时间 内完成,因为 QLinkedList 是 隐式共享 的。这使得从函数中返回 QLinkedList 非常快。如果修改共享实例,它将被复制(写时复制),这需要 线性时间。
另请参阅 operator=()。
[noexcept]
QLinkedList::QLinkedList(QLinkedList<T> &&other)
移动构造 QLinkedList 实例,使其指向 other 指向的同一对象。
QLinkedList::~QLinkedList()
销毁列表。对列表中值的引用以及此列表的所有迭代器都将失效。
void QLinkedList::append(const T &value)
将在列表末尾插入 value。
示例
QLinkedList<QString> list; list.append("one"); list.append("two"); list.append("three"); // list: ["one", "two", "three"]
这等同于 list.insert(end(), value)。
另请参阅 operator<<(),prepend() 和 insert()。
T &QLinkedList::back()
此函数是提供以与 STL 兼容。它等同于 last()。
const T &QLinkedList::back() const
这是一个重载的函数。
QLinkedList<T>::iterator QLinkedList::begin()
返回一个指向列表中第一个元素的STL风格的迭代器。
另请参阅constBegin() 和 end。
[noexcept]
QLinkedList<T>::const_iterator QLinkedList::begin() const
这是一个重载的函数。
[noexcept]
QLinkedList<T>::const_iterator QLinkedList::cbegin() const
返回一个指向列表中第一个元素的常量 STL风格的迭代器。
[noexcept]
QLinkedList<T>::const_iterator QLinkedList::cend() const
返回一个指向列表中最后一个元素之后虚拟元素的常量 STL风格的迭代器。
void QLinkedList::clear()
移除列表中的所有元素。
另请参阅removeAll。
[noexcept]
QLinkedList<T>::const_iterator QLinkedList::constBegin() const
返回一个指向列表中第一个元素的常量 STL风格的迭代器。
[noexcept]
QLinkedList<T>::const_iterator QLinkedList::constEnd() const
返回一个指向列表中最后一个元素之后虚拟元素的常量 STL风格的迭代器。
另请参阅constBegin() 和 end。
bool QLinkedList::contains(const T &value) const
如果列表中含有 value 的出现,则返回 true
;否则返回 false
。
此函数需要值类型实现 operator==()
。
另请参阅QLinkedListIterator::findNext() 和 QLinkedListIterator::findPrevious。
int QLinkedList::count(const T &value) const
返回列表中 value 出现的次数。
此函数需要值类型实现 operator==()
。
另请参阅contains。
int QLinkedList::count() const
等同于 size。
[noexcept]
QLinkedList<T>::const_reverse_iterator QLinkedList::crbegin() const
返回一个指向列表中第一个元素(逆向顺序)的常量 STL-style 反向迭代器。
[noexcept]
QLinkedList<;《span class="type">T=>::const_reverse_iterator QLinkedList::crend() const
返回一个指向列表中最后一个元素之后的const STL风格的反向迭代器,按反向顺序。
bool QLinkedList::empty() const
该函数提供用于与STL兼容。它与isEmpty()等效,如果列表为空返回true
。
QLinkedList<T>::iterator QLinkedList::end()
返回一个指向列表中最后一个元素之后虚拟元素的STL风格迭代器。
[noexcept]
QLinkedList<T>::const_iterator QLinkedList::end() const
这是一个重载的函数。
bool QLinkedList::endsWith(const T &value) const
如果列表不为空且最后一个元素等于value,则返回true
;否则返回false
。
QLinkedList<T>::iterator QLinkedList::erase(QLinkedList<T>::iterator pos)
从列表中移除由迭代器pos指向的项目,并返回指向列表中下一个元素(可能是end())的迭代器。
参见insert。
QLinkedList<T>::iterator QLinkedList::erase(QLinkedList<T>::iterator begin,QLinkedList<T>::iterator end)
这是一个重载的函数。
从begin移除所有元素到end(不包括)。
T &QLinkedList::first()
返回对列表中第一个元素的引用。此函数假定列表不为空。
const T &QLinkedList::first() const
这是一个重载的函数。
[static]
QLinkedList<T> QLinkedList::fromStdList(const std::list<T> &list)
返回一个包含 list 数据的 QLinkedList 对象。该对象中的元素顺序与 list 中的顺序相同。
示例
std::list<double> stdlist; list.push_back(1.2); list.push_back(0.5); list.push_back(3.14); QLinkedList<double> list = QLinkedList<double>::fromStdList(stdlist);
另请参阅 toStdList。
T &QLinkedList::front()
此函数提供以供与STL兼容。它与 first 等效。
const T &QLinkedList::front() const
这是一个重载的函数。
QLinkedList<T>::iterator QLinkedList::insert(QLinkedList<T>::iterator before, const T &value)
在由迭代器 before 指向的项目之前插入 value。返回指向插入项的迭代器。
另请参阅 erase。
bool QLinkedList::isEmpty() const
如果列表中不包含项目,则返回 true
;否则返回 false
。
另请参阅 size。
T &QLinkedList::last()
返回列表中最后一个项目的引用。此函数假定列表不为空。
const T &QLinkedList::last() const
这是一个重载的函数。
void QLinkedList::pop_back()
此函数提供以供与STL兼容。它与 removeLast 等效。
void QLinkedList::pop_front()
此函数提供以供与STL兼容。它与 removeFirst 等效。
void QLinkedList::prepend(const T &value)
在列表的开头插入 value。
示例
QLinkedList<QString> list; list.prepend("one"); list.prepend("two"); list.prepend("three"); // list: ["three", "two", "one"]
这与 list.insert(begin(), value) 相同。
void QLinkedList::push_back(const T &value)
此函数提供以供与STL兼容。它与 append 等效。
void QLinkedList::push_front(const T &value)
此函数提供以供与STL兼容。它与 prepend 等效。
QLinkedList<T>::reverse_iterator QLinkedList::rbegin()
返回一个指向列表中第一个项目(反向顺序)的 STL样式 反向迭代器。
[noexcept]
QLinkedList<T>::const_reverse_iterator QLinkedList::rbegin() const
这是一个重载的函数。
int QLinkedList::removeAll(const T &value)
从列表中删除所有 value 的出现。
示例
QList<QString> list; list << "sun" << "cloud" << "sun" << "rain"; list.removeAll("sun"); // list: ["cloud", "rain"]
此函数需要值类型实现 operator==()
。
参见insert。
void QLinkedList::removeFirst()
删除列表中的第一个元素。
这与 erase(begin()) 相同。
另请参阅removeLast() 和 erase().
void QLinkedList::removeLast()
从列表中删除最后一个元素。
另请参阅removeFirst() 和 erase().
bool QLinkedList::removeOne(const T &value)
从列表中删除第一个出现的 value。成功则返回 true
,否则返回 false
。
示例
QList<QString> list; list << "sun" << "cloud" << "sun" << "rain"; list.removeOne("sun"); // list: ["cloud", "sun", "rain"]
此函数需要值类型实现 operator==()
。
参见insert。
QLinkedList<T>::reverse_iterator QLinkedList::rend()
返回一个指向列表中最后一个元素之后的 STL 风格反向迭代器的指针,按反向顺序排列。
[noexcept]
QLinkedList<T>::const_reverse_iterator QLinkedList::rend() const
这是一个重载的函数。
int QLinkedList::size() const
返回列表中的元素数量。
bool QLinkedList::startsWith(const T &value) const
如果列表不为空且第一个元素等于 value,则返回 true
;否则返回 false
。
[noexcept]
void QLinkedList::swap(QLinkedList<T> &other)
将列表 other 与此列表交换。此操作非常快且永远不会失败。
T QLinkedList::takeFirst()
删除列表中的第一个元素并返回它。
如果您不在意返回值,则 removeFirst() 更有效率。
另请参阅takeLast() 和 removeFirst().
T QLinkedList::takeLast()
删除列表中的最后一个元素并返回它。
如果您不在意返回值,则 removeLast() 更有效率。
另请参阅takeFirst() 和 removeLast().
std::list<T> QLinkedList::toStdList() const
返回一个包含该QLinkedList中数据的std::list对象。示例
QLinkedList<double> list; list << 1.2 << 0.5 << 3.14; std::list<double> stdlist = list.toStdList();
另请参阅 fromStdList。
bool QLinkedList::operator!=(const QLinkedList<T> &other) const
如果other不等于此列表,则返回true
;否则返回false
。
如果两个列表包含相同顺序的相同值,则认为它们是相等的。
此函数要求值类型实现operator==()
。
另请参阅 operator==。
QLinkedList<T> QLinkedList::operator+(const QLinkedList<T> &other) const
返回一个列表,该列表包含此列表中的所有项,接着是其他列表中的所有项。
另请参阅 operator+=。
QLinkedList<T> &QLinkedList::operator+=(const QLinkedList<T> &other)
将其他列表的项追加到此列表中,并返回对此列表的引用。
QLinkedList<T> &QLinkedList::operator+=(const T &value)
这是一个重载的函数。
将value追加到列表中。
QLinkedList<T> &QLinkedList::operator<<(const QLinkedList<T> &other)
将其他列表的项追加到此列表中,并返回对此列表的引用。
另请参阅 operator+=和append。
QLinkedList<T> &QLinkedList::operator<<(const T &value)
这是一个重载的函数。
将value追加到列表中。
QLinkedList<T> &QLinkedList::operator=(const QLinkedList<T> &other)
将other赋给此列表,并返回对此列表的引用。
bool QLinkedList::operator==(const QLinkedList<T> &other) const
如果other与此列表相等,则返回true
;否则返回false。
如果两个列表包含相同顺序的相同值,则认为它们是相等的。
此函数要求值类型实现operator==()
。
另请参阅 operator!=。
相关非成员
模板 <typename T> QDataStreamIfHasOStreamOperatorsContainer<QLinkedList<T>, T> operator<<(QDataStream &out, const QLinkedList<T> &list)
将链表 list 写入流 out。
该函数要求值类型实现 operator<<()
。
另请参阅QDataStream 运算符的格式。
模板 <typename T> QDataStreamIfHasIStreamOperatorsContainer<QLinkedList<T>, T> operator>>(QDataStream &in, QLinkedList<T> &list)
从流 in 读取链表到 list。
该函数要求值类型实现 operator>>()
。
另请参阅QDataStream 运算符的格式。
© 2024 Qt 公司有限。包含在此的文档贡献是各自所有者的版权。此处提供的文档是根据自由软件基金会发布的 GNU 自由文档许可证版本 1.3 的条款授予的。Qt 和相应的标志是芬兰的 Qt 公司及其在世界其他地区的 商标。所有其他商标均为其各自所有者的财产。