性能比较
容器 | 查询 | 插入元素 |
---|---|---|
QVector | O(1) | O(n) |
QList | O(1) | O(n) |
QLinkedList | O(n) | O(1) |
QMap | O(log n) | O(log n) |
QHash | Amort.O(1) | Amort.O(1) |
QSet | Amort.O(1) | Amort.O(1) |
顺序容器
容器类型 | 操作 | 使用 |
---|---|---|
QVector | 增 | qvec.push_back(“data”); qvec.push_front(“data1”); qvec.insert(2, “data2”); |
删 | qvec.remove(2); qvec.takeAt(2); // 删除指定位置并且返回值 qvec.removeOne(“data2”); // 删除第一个匹配的元素 | |
查 | int index = qvec.indexOf(“data1”); // 第一次匹配位置的序号 bool find = qvec.contains(“data1”); // 是否包含元素,返回布尔值 int count1 = qvec.count(“data2”); // 包含查询元素的个数 int count2 = qvec.count(); // 容器所有元素的个数 | |
改 | qvec.replace(1, “data3”); // 替换 qvec[1] = “data3”; // 覆盖 | |
QList | 类比上述 | |
QLinkedList | 类比上述 |
关联容器
QMap | 操作 | 底层通过平衡二叉树实现,有序关联容器 |
---|---|---|
增 | map1.insert(“Alan”, “123345”); | |
删 | map1.remove(“Alan”); | |
查 | map.contains(“Alan”); // 是否包含查询元素 map.clear(); // 清空 | |
QMultiMap | 可存储具有相同键的不同值 | |
QHash | 操作类比QMap | 底层通过哈希表实现,是无序关联容器 |
集合容器
QSet | 操作 | 底层通过 QHash 实现 |
---|---|---|
交集 | set1.intersect(set2); // 两个集合求交集后返回给 set1 | |
并集 | set1.unite(set2); // 两集合并集后返回给 set1 | |
差集 | set1.subtract(set2); // 去除 set1 中两者所共有的元素 |
若出现错误,望大家及时指正!