QMetaContainer Class

QMetaContainer 类为顺序容器和关联容器提供了通用功能。更多

头文件: #include <QMetaContainer>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
Qt 6.0
继承:

QMetaSequence

该类可等价比较

公共函数

void advanceConstIterator(void *iterator, qsizetype step) const
void advanceIterator(void *iterator, qsizetype step) const
void *begin(void *container) const
bool canClear() const
void clear(void *container) const
bool compareConstIterator(const void *i, const void *j) const
bool compareIterator(const void *i, const void *j) const
void *constBegin(const void *container) const
void *constEnd(const void *container) const
void copyConstIterator(void *target, const void *source) const
void copyIterator(void *target, const void *source) const
void destroyConstIterator(const void *iterator) const
void destroyIterator(const void *iterator) const
qsizetype diffConstIterator(const void *i, const void *j) const
qsizetype diffIterator(const void *i, const void *j) const
void *end(void *container) const
bool hasBidirectionalIterator() const
bool hasConstIterator() const
bool hasForwardIterator() const
bool hasInputIterator() const
bool hasIterator() const
bool hasRandomAccessIterator() const
bool hasSize() const
qsizetype size(const void *container) const

详细说明

成员函数文档

void QMetaContainer::advanceConstIterator(void *iterator, qsizetype step) const

将常量iterator 提前step 步。如果step 为负值,则iterator 会向后移动,移向容器的起始位置。如果hasBidirectionalIterator() 返回 false,则不会对step 的负值指定行为。

另请参阅 constBegin() 和constEnd()。

void QMetaContainer::advanceIterator(void *iterator, qsizetype step) const

将非常数iterator 向后移动step 步。如果step 为负值,则iterator 会向后移动,移向容器的起始位置。如果hasBidirectionalIterator() 返回 false,则不会对step 的负值指定行为。

另请参阅 begin() 和end()。

void *QMetaContainer::begin(void *container) const

创建并返回指向container 开头的非常数迭代器。迭代器使用 new 在堆上分配。最终必须使用destroyIterator 将其销毁,以回收内存。

如果容器不提供任何非const迭代器,则返回nullptr

另请参见 end()、constBegin()、constEnd() 和destroyIterator()。

bool QMetaContainer::canClear() const

如果可以清除容器,则返回true ,否则返回false

另请参见 clear().

void QMetaContainer::clear(void *container) const

如果可以清除给定的container ,则清除它。

另请参见 canClear().

bool QMetaContainer::compareConstIterator(const void *i, const void *j) const

如果常量迭代器ij 指向迭代容器中的相同值,则返回true ,否则返回false

另请参见 constBegin() 和constEnd()。

bool QMetaContainer::compareIterator(const void *i, const void *j) const

如果非常数迭代器ij 指向迭代容器中的相同值,则返回true ,否则返回false

另请参见 begin() 和end()。

void *QMetaContainer::constBegin(const void *container) const

创建并返回指向container 开头的常量迭代器。迭代器使用 new 在堆上分配。最终必须使用destroyConstIterator 将其销毁,以回收内存。

如果容器不提供任何常量迭代器,则返回nullptr

另请参见 constEnd()、begin()、end() 和destroyConstIterator()。

void *QMetaContainer::constEnd(const void *container) const

创建并返回指向container 末尾的常量迭代器。迭代器使用 new 在堆上分配。最终必须使用destroyConstIterator 将其销毁,以回收内存。

如果容器不提供任何常量迭代器,则返回nullptr

另请参见 constBegin()、begin()、end() 和destroyConstIterator()。

void QMetaContainer::copyConstIterator(void *target, const void *source) const

将常量迭代器source 复制到常量迭代器target 中。之后,compareConstIterator(target, source) 返回true

另请参见 constBegin() 和constEnd()。

void QMetaContainer::copyIterator(void *target, const void *source) const

将非const迭代器source 复制到非const迭代器target 中。之后,compareIterator(target, source) 返回true

另请参见 begin() 和end()。

void QMetaContainer::destroyConstIterator(const void *iterator) const

销毁之前使用constBegin() 或constEnd() 创建的常量iterator

另请参阅 constBegin()、constEnd() 和destroyIterator()。

void QMetaContainer::destroyIterator(const void *iterator) const

销毁之前使用begin() 或end() 创建的非常数iterator

另请参阅 begin()、end() 和destroyConstIterator()。

qsizetype QMetaContainer::diffConstIterator(const void *i, const void *j) const

返回常量迭代器ij 之间的距离,相当于i - j 。如果ji 更接近容器的末端,则返回值为负。在这种情况下,如果hasBidirectionalIterator() 返回 false,则行为未指定。

另请参阅 constBegin() 和constEnd()。

qsizetype QMetaContainer::diffIterator(const void *i, const void *j) const

返回非常数迭代器ij 之间的距离,相当于i - j 。如果ji 更接近容器的末端,则返回值为负。在这种情况下,如果hasBidirectionalIterator() 返回 false,则行为未指定。

另请参阅 begin() 和end()。

void *QMetaContainer::end(void *container) const

创建并返回指向container 末尾的非常数迭代器。迭代器使用 new 在堆上分配。最终必须使用destroyIterator 将其销毁,以回收内存。

如果容器不提供任何非const迭代器,则返回nullptr

另请参见 hasIterator()、end()、constBegin()、constEnd() 和destroyIterator()。

bool QMetaContainer::hasBidirectionalIterator() const

如果底层容器提供双向迭代器或随机访问迭代器(分别由 std::bidirectional_iterator_tag 和 std::random_access_iterator_tag 定义),则返回true 。否则返回false

QMetaSequence 假定同一容器中的常量迭代器和非常量迭代器具有相同的迭代器特性。

bool QMetaContainer::hasConstIterator() const

如果底层容器提供常量迭代器,则返回true ,否则返回false

另请参阅 constBegin(),constEnd(),destroyConstIterator(),compareConstIterator(),diffConstIterator(),advanceConstIterator(), 和copyConstIterator().

bool QMetaContainer::hasForwardIterator() const

如果底层容器至少提供了一个由 std::forward_iterator_tag 定义的正向迭代器,则返回true ,否则返回false 。双向迭代器和随机访问迭代器是正向迭代器的特化。如果容器提供了双向迭代器和随机存取迭代器,该方法也会返回true

QMetaSequence 假定同一容器的常量迭代器和非常量迭代器具有相同的迭代器特性。

bool QMetaContainer::hasInputIterator() const

如果底层容器至少提供了一个由 std::input_iterator_tag 定义的输入迭代器,则返回true ,否则返回false 。前向、双向和随机访问迭代器是输入迭代器的特化。如果容器提供其中一种迭代器,本方法也将返回true

QMetaSequence 假定同一容器的常量和非常量迭代器具有相同的迭代器特性。

bool QMetaContainer::hasIterator() const

如果底层容器提供非const迭代器,则返回true ,否则返回false

另请参阅 begin(),end(),destroyIterator(),compareIterator(),diffIterator(),advanceIterator(), 和copyIterator().

bool QMetaContainer::hasRandomAccessIterator() const

如果底层容器提供了由 std::random_access_iterator_tag 定义的随机访问迭代器,则返回true ,否则返回false

QMetaSequence 假定同一容器的常量迭代器和非常量迭代器具有相同的迭代器特性。

bool QMetaContainer::hasSize() const

如果可以查询容器的大小,则返回true ,否则返回false

另请参见 size().

qsizetype QMetaContainer::size(const void *container) const

如果可以查询container 的大小,则返回给定值的个数。否则返回-1

另请参阅 hasSize() 。

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.