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

  • 相关阅读:
    路由器的配置
    逻辑卷
    valn配置
    交换分区和虚拟内存
    TCP和UDP
    语法练习1
    oracl通用函数
    AOP
    oracle查询操作
    Oracle中的转换函数
  • 原文地址:https://www.cnblogs.com/fusiwei/p/11820455.html
Copyright © 2020-2023  润新知