zoukankan      html  css  js  c++  java
  • 详解C++ STL multiset 容器

    详解C++ STL multiset 容器

    本篇随笔简单介绍一下(C++STL)(multiset)容器的使用方法及常见使用技巧。

    multiset容器的概念和性质

    (set)在英文中的意义是:集合。而(multi-)前缀则表示:多重的。所以(multiset)容器就叫做:有序多重集合。

    (multiset)的很多性质和使用方式和(set)容器差不了多少。而(multiset)容器在概念上与(set)容器不同的地方就是:(set)的元素互不相同,而(multiset)的元素可以允许相同。

    所以,关于一些(multiset)容器和(set)容器的相同点,本篇博客就不加以赘述了。需要学习的小伙伴推荐进入本蒟蒻的这篇博客:

    C++STL set容器详解

    与set容器不太一样的地方:

    s.erase(k);
    

    (erase(k))函数在(set)容器中表示删除集合中元素(k)。但在(multiset)容器中表示删除所有等于(k)的元素。

    时间复杂度变成了(O(tot+logn)),其中(tot)表示要删除的元素的个数。

    那么,会存在一种情况,我只想删除这些元素中的一个元素,怎么办呢?

    可以妙用一下:

    if((it=s.find(a))!=s.end())
    	s.erase(it);
    

    (if)中的条件语句表示定义了一个指向一个(a)元素迭代器,如果这个迭代器不等于(s.end()),就说明这个元素的确存在,就可以直接删除这个迭代器指向的元素了。

    s.count(k);
    

    (count(k))函数返回集合中元素(k)的个数。(set)容器中并不存在这种操作。这是(multiset)独有的。

  • 相关阅读:
    算法-对分查找(二分查找)C++实现
    Android Studio简单设置
    一起talk C栗子吧(第八回:C语言实例--素数)
    Maven生命周期
    java8_api_日期时间
    UITableviewcell的性能问题
    iOS开发25个性能调优技巧
    iOS9新特性
    iOS9 3DTouch、ShortcutItem、Peek And Pop技术一览
    iOS网络访问之使用AFNetworking
  • 原文地址:https://www.cnblogs.com/fusiwei/p/11820455.html
Copyright © 2011-2022 走看看