标准模板库(STL)学习探究之Multimap容器
C++ Multimaps和maps很相似,但是MultiMaps允许重复的元素。(具体用法请参考map容器)
函数列表:
begin() 返回指向第一个元素的迭代器
clear() 删除所有元素
count() 返回一个元素出现的次数
empty() 如果multimap为空则返回真
end() 返回一个指向multimap末尾的迭代器
equal_range() 返回指向元素的key为指定值的迭代器对
erase() 删除元素
find() 查找元素
get_allocator() 返回multimap的配置器
insert() 插入元素
key_comp() 返回比较key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向mulitmap尾部的逆向迭代器
rend() 返回一个指向multimap头部的逆向迭代器
size() 返回multimap中元素的个数
swap() 交换两个multimaps
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数
////////////////////////////////////////////////////////////////////////////////////
构造函数
explicit multimap(const Pred& comp = Pred(), const A& al = A());
multimap(const multimap& x);
multimap(const value_type *first, const value_type *last,
const Pred& comp = Pred(), const A& al = A());
begin
语法:
iterator begin();
begin()函数返回一个迭代器,指向multimap的第一个元素。
clear
语法:
void clear();
clear()函数删除multimap中的所有元素。
count
语法:
size_type count( const key_type &key );
count()函数返回multimap中键值等于key的元素的个数。
empty
语法:
bool empty();
empty()函数返回真(true)如果multimap为空,否则返回假(false)。
end
语法:
iterator end();
end()函数返回一个迭代器,指向multimap的尾部。
equal_range
语法:
pair equal_range( const key_type &key );
equal_range()函数查找multimap中键值等于key的所有元素,返回指示范围的两个迭代器。
erase
语法:
void erase( iterator pos );
void erase( iterator start, iterator end );
size_type erase( const key_type &key );
erase()函数删除在pos位置的元素,或者删除在start和end之间的元素,或者删除那些值为key的所有元素。
find
语法:
iterator find( const key_type &key );
find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向multimap尾部的迭代器。
get_allocator
语法:
allocator_type get_allocator();
get_allocator()函数返回multimap的配置器。
insert
语法:
iterator insert( iterator pos, const TYPE &val );
void insert( input_iterator start, input_iterator end );
pair insert( const TYPE &val );
insert()函数:
插入val到pos的后面,然后返回一个指向这个元素的迭代器。
插入start到end的元素到multimap中。
只有在val不存在时插入val。返回值是一个指向被插入元素的迭代器和一个描述是否插入的bool值。
key_comp
语法:
key_compare key_comp();
key_comp()函数返回一个比较key的函数。
lower_bound
语法:
iterator lower_bound( const key_type &key );
lower_bound()函数返回一个迭代器,指向multimap中键值>=key的第一个元素。
max_size
语法:
size_type max_size();
max_size()函数返回multimap能够保存的最大元素个数。
rbegin
语法:
reverse_iterator rbegin();
rbegin()函数返回一个指向multimap尾部的逆向迭代器。
rend
语法:
reverse_iterator rend();
rend()函数返回一个指向multimap头部的逆向迭代器。
size
语法:
size_type size();
size()函数返回multimap中保存的元素个数。
swap
语法:
void swap( multimap &obj );
swap()交换obj和现mulitmap中的元素。
upper_bound
语法:
iterator upper_bound( const key_type &key );
upper_bound()函数返回一个迭代器,指向multimap中键值>key的第一个元素。
value_comp
语法:
value_compare value_comp();
value_comp()函数返回一个比较元素value的函数。
示例:
#include <iostream>
#include <map>
#include <string>
using namespace std;
void main()
{
multimap <string ,int> m;//multimap的创建
m.insert(pair<string,int>("Jack",1));//插入
m.insert(pair<string,int>("Jack",2));
m.insert(pair<string,int>("Body",1));
m.insert(pair<string,int>("Navy",4));
m.insert(pair<string,int>("Demo",3));
multimap<string,int>::iterator iter;
for (iter = m.begin();iter != m.end();++iter)//遍历
{
cout<<(*iter).first<<" "<<(*iter).second<<endl;
}
m.erase("Navy");//multimap的删除
cout<<"The element after delete:"<<endl;
for (iter = m.begin();iter != m.end();++iter)
{
cout<<(*iter).first<<" "<<(*iter).second<<endl;
}
//multimap元素的查找
multimap<string,int>::iterator it;
int num=m.count("Jack");
it = m.find("Jack");
cout<<"the search result is :"<<endl;
for(int i=1;i<=num;i++)
{
cout<<(*it).first<<" "<<(*it).second<<endl;
it++;
}
if(i==1){ cout<<"can not find!"<<endl; }
}
输出结果:
Body 1
Demo 3
Jack 1
Jack 2
Navy 4
The element after delete:
Body 1
Demo 3
Jack 1
Jack 2
the search result is :
Jack 1
Jack 2
标准模板库(STL)学习探究之Multimap容器的更多相关文章
- 标准模板库(STL)学习探究之vector容器
标准模板库(STL)学习探究之vector容器 C++ Vectors vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被 ...
- 标准模板库(STL)学习探究之stack
标准模板库(STL)学习探究之stack queue priority_queue list map/multimap dequeue string
- 标准模板库(STL)学习指南之sort排序
对于程序员来说,数据结构是必修的一门课.从查找到排序,从链表到二叉树,几乎所有的算法和原理都需要理解,理解不了也要死记硬背下来.幸运的是这些理论都已经比较成熟,算法也基本固定下来,不需要你再去花费心思 ...
- 标准模板库(STL)学习指南之List链表
本文转载自天极网,原文地址:http://www.yesky.com/255/1910755.shtml.转载请注明 什么是STL呢?STL就是Standard Template Library,标准 ...
- 标准模板库(STL)学习指南之set集合
set是关联容器.其键值就是实值,实值就是键值,不可以有重复,所以我们不能通过set的迭代器来改变set的元素的值,set拥有和list相同的特性:当对他进行插入和删除操作的时候,操作之前的迭代器依然 ...
- 标准模板库(STL)学习指南之priority_queue优先队列
转载自CSDN博客:http://blog.csdn.net/suwei19870312/article/details/5294016 priority_queue 调用 STL里面的 make_h ...
- 标准模板库(STL)学习指南之map映射
转载自CSDN博客:http://blog.csdn.net/bat603/article/details/1456141 Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关 ...
- 标准模板库(STL)学习指南之vector向量
vector – 一. vector可以模拟动态数组 – 二. vector的元素可以是任意类型T,但必须具备赋值和拷贝能力(具有public 拷贝构造函数和重载的赋值操作符) 三.必须包含的头文 ...
- STL学习系列之一——标准模板库STL介绍
库是一系列程序组件的集合,他们可以在不同的程序中重复使用.C++语言按照传统的习惯,提供了由各种各样的函数组成的库,用于完成诸如输入/输出.数学计算等功能. 1. STL介绍 标准模板库STL是当今每 ...
随机推荐
- java 多线程实现的四种方式
一个线程的生命周期 线程是一个动态执行的过程,它也有一个从产生到死亡的过程. 下图显示了一个线程完整的生命周期. 新建状态: 使用 new 关键字和 Thread 类或其子类建立一个线程对象后,该线程 ...
- 【记录】iconfont 批量把图标加入购物车的方法
iconfont 是阿里旗下很好用的图标管理网站(https://www.iconfont.cn/),里面有百万个小图标,可以随意下载切换颜色,是很多前端人员的选择. 但是网站没有将图标批量加入购物 ...
- rsync nfs 实时同步,结合实战
目录 rsync nfs 实时同步,实战 一.部署rsync服务端(backup) 二.部署rsync客户端(nfs,web01) 三.部署web代码(web01) 四.NFS服务端部署(nfs) 五 ...
- go语言从例子开始之Example22.协程之通道
通道 是连接多个 Go 协程的管道.你可以从一个 Go 协程将值发送到通道,然后在别的 Go 协程中接收. Example: package main import "fmt" f ...
- 判断Xen虚拟机随想
kvm xen虚拟化技术 剑桥大学开发,vmware visualbox windows下检测是否安装,注册表读取安装路径 linux下检测是否安装 rpm -qa 列出 判断软件包是否安装,rpm ...
- Es学习第三课, ElasticSearch基本的增删改查
前面两课我们了解了ES的基本概念并且学会了安装ES,这节课我们就来讲讲ES基本的增删改查:ES主要对外界提供的是REST风格的API,我们通过客户端操作ES本质上就是API的调用.在第一课我们就讲了索 ...
- Python 获取当前文件所在路径
记录几个os获取路径的函数 1. os.path.realpath(__file__):获取文件的绝对路径,包括文件自己的名字 2.os.path.dirname(path):获取path路径的上级路 ...
- Vue 之指令篇
文件指令 <body> <div id="app"> <!-- 1) 插值表达式 --> <p>{ ...
- SCP-bzoj-1019
项目编号:bzoj-1019 项目等级:Safe 项目描述: 戳这里 特殊收容措施: 对于一个hanoi,知道了各种移动操作的优先级,也就确定了方案.可以证明对于盘子数为N的hanoi,任意移动方案都 ...
- docker-compose快速搭建 Prometheus+Grafana监控系统
一.说明Prometheus负责收集数据,Grafana负责展示数据.其中采用Prometheus 中的 Exporter含:1)Node Exporter,负责收集 host 硬件和操作系统数据.它 ...