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 |
继承: |
该类可等价比较。
公共函数
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 的负值指定行为。
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
如果常量迭代器i 和j 指向迭代容器中的相同值,则返回true
,否则返回false
。
另请参见 constBegin() 和constEnd()。
bool QMetaContainer::compareIterator(const void *i, const void *j) const
如果非常数迭代器i 和j 指向迭代容器中的相同值,则返回true
,否则返回false
。
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
。
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
返回常量迭代器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,则行为未指定。
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.