无锡网站制作方案,企业三合一建站公司怎么找,广州城乡建设部网站首页,建网站签合同一.QT容器分类
Qt提供了多种容器类#xff0c;大致可以分为以下几类#xff1a;
1.顺序容器#xff1a;这类容器按照线性顺序#xff08;如列表或数组#xff09;存储元素。例如#xff0c;QList, QLinkedList, QVector, QStack, 和 QQueue。
2.关联容器#xff1a;这…一.QT容器分类
Qt提供了多种容器类大致可以分为以下几类
1.顺序容器这类容器按照线性顺序如列表或数组存储元素。例如QList, QLinkedList, QVector, QStack, 和 QQueue。
2.关联容器这类容器允许你存储自定义的键值对。例如QMap 和 QHash。
3.容器迭代器用于遍历容器中的元素。Qt提供了Java类型的迭代器和STL类型的迭代器。
4.其他容器还有一些其他类型的容器如QSet用于存储唯一元素的集合。 二.容器介绍
1.顺序容器和关联容器在前面文章已有详细介绍不在赘述。
2.容器迭代器
1Java风格的迭代器
QSetIterator: 这是一个只读迭代器用于遍历QSet中的元素。
QSetint set;
// 假设set已经被填充了一些数据...
QSetIteratorint it(set);
while (it.hasNext()) { int value it.next(); qDebug()value;
} 2STL风格的迭代器
QSet::const_iterator: 这是一个const迭代器用于只读遍历集合中的元素。
const QSetint set;
// 假设set已经被填充了一些数据...
for (QSetint::const_iterator it set.constBegin(); it ! set.constEnd(); it) { int value *it; qDebug()value;
} 三.QSet介绍
QSetT 是 Qt 的通用容器类之一。 它以未指定的顺序存储值并提供非常快速的值查找。
QSet的API大部分和QList相同。这里仅列举QSet独有的成员函数。
1、QSetT intersect(const QSetT other)
QSetT operator(const QSetT other)
从当前集合中删除other集合中未包含的所有项目。返回当前集合的引用。
QSetint set1{1,2,3,4,5};
QSetint set2{4,5};
set1.intersect(set2);
qDebug()set1;// QSet(4, 5) 2、bool intersects(const QSetT other)
如果此集合至少有一项与 other 的项相同则返回 true。是否相交 3、QSetT subtract(const QSetT other)
从当前集合中删除包含在other集合中的所有项目。返回当前集合的引用。
QSetint set1{1,2,3,4,5};
QSetint set2{4,5};
set1.subtract(set2);
qDebug()set1;// QSet(1, 2, 3) 4、QSetT unite(const QSetT other)
other 集合合并到当前集合。 返回当前集合的引用。
QSetint set1{1,2,3,4,5};
QSetint set2{4,5,6,7};
set1.unite(set2);
qDebug()set1;//QSet(3, 1, 5, 6, 7, 2, 4) 5、QSetT operator(const QSetT other)
返回新的集合。取交集。
QSetint set1{1,2,3,4,5};
QSetint set2{4,5,6,7};
qDebug()(set1 set2);//QSet(4, 5) 6、QSetT operator(const T value)
QSetint set1{1,2,3,4,5};
set1 4;
qDebug()set1;//QSet(4) 7、QSetT operator-(const QSetT other)
返回一个新的 QSet它是当前集合和 other 集合的集合差。
QSetint set1{1,2,3,4,5};
QSetint set2{4,5,6,7};
qDebug()(set1 - set2);// QSet(1, 2, 3) 8、QSetT operator-(const QSetT other)
等同于 subtract(other)。 9、QSetT operator-(const T value)
减去集合中的一项
QSetint set1{1,2,3,4,5};
qDebug()(set1 - 3);// QSet(5, 2, 1, 4) 10. // 输出成QList
QListQString listStrs set.toList();
qDebug() 输出成QList listStrs; 11.常规操作
QSetQString set;
set.insert(212); // 重置大小 set.reserve(10); // 输出容量
qDebug() 容量 set.capacity(); // 输出内容 qDebug() 输出内容 set;
// 是否包含
set.contains(121) //true 包含
// 输出实际大小
qDebug() 实际大小 set.size(); // 输出内容
qDebug() 输出内容 set;
// 是否是空 qDebug() 是否为空 set.isEmpty();
// 移除某值
set.remove(121);
// 输出所有元素
qDebug() 输出元素 set.values();
// 清除
set.clear(); 四.使用场景
1.消除重复项
如果有一个包含重复项的列表或数组并且想要消除重复项可以使用QSet。QSet会自动删除重复的元素只保留唯一的元素。
2.快速查找
QSet提供了高效的插入、查找和删除操作。如果需要频繁地查找元素是否存在于一个集合中QSet是一个很好的选择。它的查找操作的时间复杂度接近于O(1)因此非常快速。
3.集合运算QSet支持常见的集合运算如并集、交集和差集。可以使用QSet来执行这些操作对两个集合进行合并、比较或找出它们的共同元素。
4.存储唯一标识符
在某些情况下可能需要存储一组唯一标识符例如数据库中的唯一ID或网络中的唯一连接。QSet可以方便地存储这些标识符并确保每个标识符只出现一次。
5.跟踪状态
如果需要跟踪一组对象的状态并确保每个状态只出现一次可以使用QSet。例如在一个游戏中可能需要跟踪玩家已经访问过的关卡以确保他们不会重复访问。