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)独有的。

  • 相关阅读:
    选择省市区的组件
    element ui 合计/table show-summary
    双击放大预览功能/组件
    vue 中获取初始的值
    vue 兄弟组件之间通信
    js数组常用到的方法,及其注意事项
    ps
    最有效的学习方法
    css2
    prettytable:像数据库一样格式化输出内容
  • 原文地址:https://www.cnblogs.com/fusiwei/p/11820455.html
Copyright © 2011-2022 走看看