本页内容

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
被继承于:

QMetaAssociation 以及QMetaSequence

QMetaContainer 比较

类别可比较类型
相等性QMetaContainer

公共函数

QMetaContainer()
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

详细说明

QMetaContainer 是 Qt 元类型系统的一部分,允许在运行时以类型擦除的方式访问容器类类型。

它作为一个通用基础,用于以通用方式访问容器的属性(例如大小、迭代和清空操作),而无需知道实际的容器类型。

派生类(例如QMetaSequence )为顺序容器提供了专门的接口。

成员函数文档

[constexpr noexcept default] QMetaContainer::QMetaContainer()

默认——构造一个QMetaContainer 的实例。

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

将非 constiterator 向前移动step 步。如果step 为负数,则iterator 将向后移动,朝向容器的开头。如果hasBidirectionalIterator() 返回 false,且step 的值为负数,则行为未定义。

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

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

创建并返回一个指向container 开头的非const迭代器。该迭代器使用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

如果常量迭代器i 和j 指向它们正在遍历的容器中的同一个值,则返回true ;否则返回false 。

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

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

如果非常量迭代器i 和j 指向它们正在遍历的容器中的同一个值,则返回true ;否则返回false 。

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

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

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

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

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

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

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

如果容器不提供任何 const 迭代器,则返回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() 创建的 constiterator 。

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

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

销毁一个先前通过begin() 或end() 创建的非 constiterator 。

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

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

返回常量迭代器i 和j 之间的距离,这等同于i 、- 和j 。如果j 比i 更接近容器的末尾,则返回值为负数。在此情况下,如果hasBidirectionalIterator() 返回 false,则行为未定义。

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

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

返回非常量迭代器i 和j 之间的距离,这相当于i - j 。如果j 比i 更接近容器的末尾,则返回负值。在此情况下,如果hasBidirectionalIterator() 返回 false,则行为未定义。

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

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

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

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

另请参见 hasIterator()、begin()、constBegin()、constEnd() 以及destroyIterator()。

bool QMetaContainer::hasBidirectionalIterator() const

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

QMetaContainer 假设同一容器的 const 和非 const 迭代器具有相同的迭代器特性。

bool QMetaContainer::hasConstIterator() const

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

另请参阅 constBegin()、constEnd()、destroyConstIterator()、compareConstIterator()、diffConstIterator()、advanceConstIterator() 以及copyConstIterator()。

bool QMetaContainer::hasForwardIterator() const

如果底层容器至少提供了一个符合 std::forward_iterator_tag 定义的前向迭代器,则返回true ;否则返回false 。双向迭代器和随机访问迭代器是前向迭代器的特化形式。如果容器提供了上述任一类型的迭代器,该方法还将返回true 。

QMetaContainer 该方法假设同一容器的 const 和非 const 迭代器具有相同的迭代器特性。

bool QMetaContainer::hasInputIterator() const

如果底层容器至少提供了一个符合 std::input_iterator_tag 定义的输入迭代器,则返回true ;否则返回false 。前向迭代器、双向迭代器和随机访问迭代器都是输入迭代器的特化形式。如果容器提供了上述任一类型的迭代器,该方法还将返回true 。

QMetaContainer 假设同一容器的 const 和非 const 迭代器具有相同的迭代器特性。

bool QMetaContainer::hasIterator() const

如果底层容器提供的是非常量迭代器,则返回true ;否则返回false 。

另请参见 begin()、end()、destroyIterator()、compareIterator()、diffIterator()、advanceIterator(),以及copyIterator()。

bool QMetaContainer::hasRandomAccessIterator() const

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

QMetaContainer 假设同一容器的 const 和非 const 迭代器具有相同的迭代器特性。

bool QMetaContainer::hasSize() const

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

另请参阅 size()。

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

如果能够查询给定的container 的大小,则返回其中值的个数;否则返回-1 。

另请参阅 hasSize()。

© 2026 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.