【Qt】容器模板类:性能比较、常用操作

性能比较

容器查询插入元素
QVectorO(1)O(n)
QListO(1)O(n)
QLinkedListO(n)O(1)
QMapO(log n)O(log n)
QHashAmort.O(1)Amort.O(1)
QSetAmort.O(1)Amort.O(1)

顺序容器

容器类型操作使用
QVectorqvec.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 中两者所共有的元素

若出现错误,望大家及时指正!

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值