STL容器之map unordered_map multimap....

multimap
multimap和map所支持的操作相同(除了multimap不支持下标运算),但是multimap允许重复的元素。

///1. 初始化 
  multimap<int, string> mapStudent; 
  multimap<int, string>::iterator iter, beg, end; 
    
  ///2. 添加元素 
  ///multimap不支持下标操作 
  mapStudent.insert(pair<int, string>(0, "student_one")); 
  mapStudent.insert(pair<int, string>(0, "student_one_copy"));///一对多
  
  int count = mapStudent.count(0); //
  iter = mapStudent.find(0); 
  for (int i = 0; i < count; i++, iter++) //相同键的元素相邻排放
    cout << iter->first << " " << iter->second << endl; 
  cout << endl; 

multiset(多元集合)
多元集合(multiset)和集合(set)所支持的操作相同,只不过支持重复对象。

multiset是库中一个非常有用的类型,它可以看成一个序列,插入一个数,删除一个数都能够在O(logn)的时间内完成,而且他能时刻保证序列中的数是有序的,而且序列中可以存在重复的数

总结:
Vector是顺序容器,是一个动态数组,支持随机存取、插入、删除、查找等操作,在内存中是一块连续的空间。在原有空间不够情况下自动分配空间,增加为原来的两倍。vector随机存取效率高,但是在vector插入元素,需要移动的数目多,效率低下。
map set容器的底层实现为红黑树(二叉树),以红黑树的结构实现,插入删除等操作都在O(logn)时间内完成。
unordered_map,unordered_set的底层实现用哈希函数组织,根据其哈希值组织到桶中,以允许通过键值直接快速访问各个元素(常量的平均时间复杂度)即O(1)。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值