C++ map的基本操作和使用

C++ MAP 详解 **Map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据 处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一 种非严格意义上的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会... 阅读详情

map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。

 

map能自动建立Key - value的对应。key 和 value可以是任意你需要的类型。

map中的元素是自动按key升序排序,所以不用对map进行排序,也无法排序(如果要按降序输出,可以用map.sizeof( ) 获得map的长度)。

根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查找10次,1,000,000个记录,最多查找20次。

头文件:  #include <map>

 

 

map最基本的构造函数;

map(A,B)name;A和B都是类型名 A是输入的变量类型,B是A要映射的类型;

在输出时,A用first指向,B用second指向。

比如:

 

#include<iostream>
#include<map>
#include<string>
using namespace std;

int main(){
	map<string,int> mp;
	mp.insert(pair<string,int>("jieguo",3));
	map<string,int>::iterator it; //迭代在后面会讲到
	it=mp.begin(); 
	cout<< it->first<<endl<< it->second <<endl;
	return 0;

 

 

 

例举几种map的定义:

   map<string ,int>mapstring;        map<int ,string >mapint;
   map<sring,char>mapstring;        map< char ,string>mapchar;
   map<char,int>mapchar;           map<int ,char >mapint;

 

map插入数据:

  1.maplive.insert(pair<int,string>(102,"aclive"));

  2.maplive[112]="April";//map中最简单最常用的插入添加!

 

map中元素的查找与删除:

如果只是要判断map中是否有A元素,要用到迭代器:

map<string,int>::iterator it;  //定义迭代器

 

#include<stdio.h>
#include<iostream>
#include<map>
#include<string>
using namespace std;

int main(){
	map<string,int> mp;
	mp.insert(pair<string,int>("jieguo",3));
	mp.insert(pair<string,int>("qiyin",4));
	
	map<string,int>::iterator it;//定义迭代器 
	it=mp.find("qiyin"); //查找"qiyin"这个元素 
	if(it!=mp.end()) mp.erase(it);//删除操作 
	else printf("it doesn't exist\n");
	
	for(it=mp.begin();it!=mp.end();it++)
	cout<<it->first<<endl;
	
	return 0;
}


map中两个元素的交换(实际上两个map容器交换,key值和value都交换了)

 

1.  map.swap(s1,s2);

2.  s1.swap(s2);

举个网上的例子

 

#include<map>
#include<iostream>

usingnamespace std;

int main()
{
map <int, int> m1, m2, m3;
map <int,int>::iterator m1_Iter;

m1.insert( pair <int, int>(1, 10 ) );
m1.insert ( pair <int,int> ( 2, 20 ) );
m1.insert ( pair <int,int> ( 3, 30 ) );
m2.insert ( pair <int,int> ( 10, 100 ) );
m2.insert ( pair <int,int> ( 20, 200 ) );
m3.insert ( pair <int,int> ( 30, 300 ) );

cout << "The original map m1is:";
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )
cout << " "<<m1_Iter->second;
cout << "."<< endl;

// This isthe member function version of swap
// m2 is said to be theargument map; m1 the target map
m1.swap( m2);

cout << "Afterswapping with m2, map m1 is:";
for ( m1_Iter = m1.begin( ) ; m1_Iter != m1.end() ; m1_Iter++ )
cout << " "<< m1_Iter ->second;
cout << "."<< endl;


cout << "After swapping with m2, mapm2 is:";
for ( m1_Iter = m2.begin( ); m1_Iter != m2.end(); m1_Iter++ )
cout << " "<< m1_Iter ->second;
cout << "."<< endl;


// This is the specialized template version of swap
swap( m1, m3 );

cout << "Afterswapping with m3, map m1 is:";
for ( m1_Iter = m1.begin( ); m1_Iter != m1.end(); m1_Iter++ )
cout << " "<< m1_Iter ->second;
cout << "."<< endl;
}

可以看出,这个例子中,不仅仅是key值(first)进行了互换,第二个(second)也互换了。

 

 

map的sort函数:

 

#include<map>
#include<iostream>

usingnamespace std;

int main( )
{
map<int, int> m1;
map <int,int>::iterator m1_Iter;

m1.insert (pair <int, int> (1, 20 ) );
m1.insert ( pair<int, int> ( 4, 40) );
m1.insert ( pair<int, int> ( 3, 60) );
m1.insert ( pair<int, int> ( 2, 50) );
m1.insert ( pair<int, int> ( 6, 40) );
m1.insert ( pair<int, int> ( 7, 30) );

cout<< "The original map m1is:"<<endl;
for ( m1_Iter = m1.begin( );m1_Iter != m1.end( ); m1_Iter++ )
cout << m1_Iter->first<<""<<m1_Iter->second<<endl;

}

The original map m1 is:
1 20
2 50
3 60
4 40
6 40
7 30


map的基本操作函数:
C++Maps 是一种关联式容器,包含“关键字/值”对
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数

 

 

 

 

无涯教程-C++ Map - swap函数 C++映射函数用于交换(或交换)两个映射的内容,但是两个映射必须是同一类型,尽管大小可能有所不同。 阅读详情

相关推荐

Linux平台CCS安装配置完整示例

手把手讲解在Linux系统中完成CCS安装与环境配置的全过程,涵盖关键步骤与常见问题解决,是查找ccs安装教程时不可多得的实战指南。

weixin_42601134的博客 481

c++map详解

map简介 map是STL的一个关联容器,以键值对存储的数据,其类型可以自己定义,每个关键字在map中只能出现一次,关键字不能修改,值可以修改;map同set、multiset、multimap(与map的差别仅在于multimap允许一个键对应多个值)内部数据结构都是红黑树,而java中的hashmap是以hash table实现的。所以map内部有序(自动排序),查找时间复杂度为O(logn)map用法 1、头文件 #include<map> 2、 ...

weixin_41501074的博客 9万+

RK356x U-Boot研究所(命令篇)3.12 mtd命令的用法

RK356x U-Boot研究所(命令篇)3.12 mtd命令的用法

Systemcall名屋 1657

C++中的map

文章目录1. 简介2. pair类型2.1 pair类型的定义初始化2.2 pair对象的一些操作3. map基本操作3.1 头文件3.2 创建map对象3.3 map元素访问3.3.1 使用下标 [ ] 访问3.3.2 使用 at() 方法访问3.4 map中元素的插入3.4.1 使用下标[]插入3.4.2 使用insert()插入元素3.4 erase() 删除元素3.5 count(k) ...

SmileLing的专栏 4万+

C++ Map常见用法说明

C++map提供的是一种键值对容器,里面的数据都是成对出现的,如下图:每一对中的第一个值称之为关键字(key),每个关键字只能在map中出现一次;第二个称之为该关键字的对应值。一. 声明//头文件 #include<map>map<int, string> ID_Name;// 使用{}赋值是从c++11开始的,因此编译器版本过低时会报错,如visual studio 2012 map<int,

shuzfan的专栏 28万+

C++map基本操作嵌套map使用

C++map容器提供一个键值对容器,map与multimap差别仅仅在于multiple允许一个键对应多个值。本文主要总结一下map基本用法嵌套用法示例。一、map基本用法  1   头文件   #include   &lt;map&gt;   2   定义   map&lt;int,   int&gt;   my_Map; //注意这里的intint可以是其他类型  或者是typedef ...

zyx_0604的博客 1万+

[转载]C++使用: C++map基本操作用法

C++使用: C++map基本操作用法 在阅读SSD代码中发现作者使用C++中的map方法,因此搜索该关联式容器的使用方法,在这里一并总结。 一、Map 簡介 Map是STL的一個容器,它提供一對一的hash。 第一個可以稱為關鍵字(key),每個關鍵字只能在map中出現一次, 第二個可能稱為該關鍵字的值(value) Map以模板(泛型)方式實現,可以儲存任意類型的變數,包括...

BLOCKGOLD.E的博客 193

C++map基本操作使用

1、map简介 map是一类关联式容器。它的特点是增加删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。 2、map的功能 自动建立Key - value的对应。key value可以是任意你需要的类型。  根据key值快速查找记录,查找的复杂度基本是Log(N),如果有1000个记录,最多查

曲径通幽处 502

C++】手把手教你看懂的 STL map 详解(超详细解析,小白一看就懂!!)

map】是STL中的容器之一,不同于普通容器,它的查找速度极快,常用来存储各种经常被检索的数据,因为容器的底层是【红黑树】。除此之外,还可以借助其特殊的性质,解决部分难题。

weixin_45031801的博客 9113

详解c++---map的介绍

map的用法介绍

qq_68695298的博客 8995

深入浅出C++ ——map类深度剖析

官方文档map是关联容器,它按照特定的次序(按照key来比较)存储由键值key值value组合而成的元素。在map中,键值key通常用于排序惟一地标识元素,而值value中存储与此键值key关联的内容。键值key值value的类型可能不同,并且在map的内部,key与value通过成员类型value_type绑定在一起,为其取别名称为pair:typedef pair value_type;在内部,map中的元素总是按照键值key进行比较排序的。

weixin_55051736的博客 8597

C++中的map用法详解

对于C++中的map容器的用法详解,简单易懂,非常适合小白同学

gaoqiandr的博客 5万+

C++map

C++STL】map使用

m0_72563041的博客 2965

基于STM32温控风扇设计综合实践论文.doc

基于STM32温控风扇设计综合实践论文

上一篇: 大组合数取模 Lucas定理 HD3037
下一篇: 判断两条线段是否相交 计算几何
Exchan
博客等级 码龄10年 11粉丝 71原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值