首页 > 其他分享 >multiset容器

multiset容器

时间:2024-04-23 09:11:07浏览次数:18  
标签:返回 容器 const 迭代 元素 multiset

和 set 容器不同的是,multiset 容器可以存储多个值相同的元素

multiset 容器类模板的定义如下所示:

template < class T,                        // 存储元素的类型
           class Compare = less<T>,        // 指定容器内部的排序规则
           class Alloc = allocator<T> >    // 指定分配器对象的类型
           > class multiset;

成员函数:

成员方法 功能
begin() 返回指向容器中第一个(注意,是已排好序的第一个)元素的双向迭代器。如果 multiset 容器用 const 限定,则该方法返回的是 const 类型的双向迭代器。
end() 返回指向容器最后一个元素(注意,是已排好序的最后一个)所在位置后一个位置的双向迭代器,通常和 begin() 结合使用。如果 multiset 容器用 const 限定,则该方法返回的是 const 类型的双向迭代器。
rbegin() 返回指向最后一个(注意,是已排好序的最后一个)元素的反向双向迭代器。如果 multiset 容器用 const 限定,则该方法返回的是 const 类型的反向双向迭代器。
rend() 返回指向第一个(注意,是已排好序的第一个)元素所在位置前一个位置的反向双向迭代器。如果 multiset 容器用 const 限定,则该方法返回的是 const 类型的反向双向迭代器。
cbegin() 和 begin() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改容器内存储的元素值。
cend() 和 end() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改容器内存储的元素值。
crbegin() 和 rbegin() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改容器内存储的元素值。
crend() 和 rend() 功能相同,只不过在其基础上,增加了 const 属性,不能用于修改容器内存储的元素值。
find(val) 在 multiset 容器中查找值为 val 的元素,如果成功找到,则返回指向该元素的双向迭代器;反之,则返回和 end() 方法一样的迭代器。另外,如果 multiset 容器用 const 限定,则该方法返回的是 const 类型的双向迭代器。
lower_bound(val) 返回一个指向当前 multiset 容器中第一个大于或等于 val 的元素的双向迭代器。如果 multiset 容器用 const 限定,则该方法返回的是 const 类型的双向迭代器。
upper_bound(val) 返回一个指向当前 multiset 容器中第一个大于 val 的元素的迭代器。如果 multiset 容器用 const 限定,则该方法返回的是 const 类型的双向迭代器。
equal_range(val) 该方法返回一个 pair 对象(包含 2 个双向迭代器),其中 pair.first 和 lower_bound() 方法的返回值等价,pair.second 和 upper_bound() 方法的返回值等价。也就是说,该方法将返回一个范围,该范围中包含所有值为 val 的元素。
empty() 若容器为空,则返回 true;否则 false。
size() 返回当前 multiset 容器中存有元素的个数。
max_size() 返回 multiset 容器所能容纳元素的最大个数,不同的操作系统,其返回值亦不相同。
insert() 向 multiset 容器中插入元素。
erase() 删除 multiset 容器中存储的指定元素。
swap() 交换 2 个 multiset 容器中存储的所有元素。这意味着,操作的 2 个 multiset 容器的类型必须相同。
clear() 清空 multiset 容器中所有的元素,即令 multiset 容器的 size() 为 0。
emplace() 在当前 multiset 容器中的指定位置直接构造新元素。其效果和 insert() 一样,但效率更高。
emplace_hint() 本质上和 emplace() 在 multiset 容器中构造新元素的方式是一样的,不同之处在于,使用者必须为该方法提供一个指示新元素生成位置的迭代器,并作为该方法的第一个参数。
count(val) 在当前 multiset 容器中,查找值为 val 的元素的个数,并返回。

标签:返回,容器,const,迭代,元素,multiset
From: https://www.cnblogs.com/love-9/p/18152063

相关文章

  • Spring 源码阅读(二)IoC 容器初始化以及 BeanFactory 创建和 BeanDefinition 加载过程
    相关代码提交记录:https://github.com/linweiwang/spring-framework-5.3.33IoC容器三种启动方式XMLJavaSE:ApplicationContextcontext=newClassPathXmlApplicationContext("beans.xml")ApplicationContextcontext=newFileSystemXmlApplicationContext("C:/beans......
  • 容器结构分类
    容器结构分类容器在内存的布局方式红黑树高度平衡二分树,树的左边和右边会自己调整高度,避免查找的时候找到某一种很长的线一直找下去set和map都有红黑树实现HashTable链表过长链表的查找要一个一个查找.链表过程会导致速度过慢设置每一个链表不能过长如果过长就会通......
  • 容器使用之multiset
    容器使用之multiset可以理解为小型关联数据库底层结构:红黑树示例代码:#pragma#ifndef__MULTISET__#define__MMULTISE__​#include<set>#include<iostream>​usingnamespacestd;​namespaceMyTestSet{voidtest_set(long&value){multiset<string>c;/......
  • set容器
    set容器定义于<set>头文件,并位于std命名空间中。因此如果想在程序中使用set容器,该程序代码应先包含如下语句:#include<set>usingnamespacestd;set容器的类模板定义如下:template<classT,//键key和值value的类型classCom......
  • Python数据容器
    1.容器定义:容纳多份数据的数据类型。Python的数据容器可以理解为C++中的数据结构,这些数据结构的方法多为“增删改查”。容器类型:列表、元组、字符串、2.列表list列表可理解为数组,下标从0开始。定义定义代码name_list=['zhangsan','lisi','wangwu']#字......
  • deque容器
    deque和vector的最大差异一在于deque允许常数时间内对头端或尾端进行元素的插入或移除操作。二在于deque没有所谓的容量概念,因为它是动态地以分段连续空间组合而成随时可以增加一块新的空间并拼接起来。虽然deque也提供随机访问的迭代器,但它的迭代器和vector、list容器的......
  • 容器化最佳实践
    容器构建最佳实践1.每个容器打包一个应用重要性:高由于容器与其托管的应用具有相同的生命周期,因此每个容器应仅包含一个应用。当容器启动时,应用也应该启动,当应用停止时,容器也应该停止。如果一个容器中具有多个应用,则这些应用可能具有不同的生命周期或处于不同状态。例如,到......
  • springboot 嵌入式的web容器的的选择
    springboot默认内置tomcat可以替换undertow、jetty、nettytomcattomcat默认200最大线程完整实现了JEE容器和serlet规范tomcat6以后支持Jdk1.4的NIO用于完整支持了javaee因此比较笨重和重量级很多高并发会替换成undertowundertow这个是红帽2012开源出来的一个......
  • list容器
    list是一种双向链表。list的设计更加复杂一点,好处是每次插入或删除一个元素,就配置或释放一个元素,list对于空间的运用有绝对的精准,一点也不浪费。而且对于任何位置的元素插入或删除,list永远是常数空间。list源码分成了两个部分,一个部分是list结构,另一部分是list节点的结......
  • vcetor容器
    1.基本数据结构template<classT,classAlloc=alloc>classvector{public:typedefTvalue_type;typedefvalue_type*pointer;typedefconstvalue_type*const_pointer; //定义迭代器,这里就只是一个普通的指针typedefvalue_type*iter......