C++11中map的用法
1. 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;
2. map添加数据;
map<int ,string>maplive;
1. maplive.insert(pair<int,string>(102,"aclive"));
2. maplive.insert(map<int,string>::value_type(321,"hai"));
3. maplive[112]="April";//map中最简单最常用的插入添加!
3. map中元素的查找:
find()函数返回一个迭代器指向键值为key的元素,如果没找到就返回指向map尾部的迭代器。
map<int ,string >::iterator l_it;; 
l_it=maplive.find(112);//返回的是一个指针
if(l_it==maplive.end())
cout<<"we do not find112"<<endl;
elsecout<<"wo find112"<<endl;
map<string,string> m;
if(m[112]=="")
cout<<"we do not find112"<<endl;
4. map中元素的删除:
如果删除112;
map<int ,string>::iterator l_it;;
l_it =maplive.find(112);
if( l_it == maplive.end())
cout<<"we do not find112"<<endl;
else maplive.erase(l_it);//delete 112;
5. map中 swap的用法:
Map中的swap不是一个容器中的元素交换,而是两个容器交换;
For example:
#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;
}
6. map的sort问题:
Map中的元素是自动按key升序排序,所以不能对map用sort函数:
For example:
#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
7. 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的函数
- //multimap允许重复的键值插入容器
 - // **********************************************************
 - // * pair只包含一对数值:pair<int,char> *
 - // * map是一个集合类型,永远保持排好序的, *
 - // pair * map每一个成员就是一个pair,例如:map<int,char> *
 - // * map的insert()可以把一个pair对象作为map的参数,例如map<p> *
 - // ***********************************************************
 - #pragma warning(disable:4786)
 - #include<map>
 - #include<iostream>
 - using namespace std;
 - int main(void)
 - {
 - multimap<int,char*> m;
 - //multimap的插入只能用insert()不能用数组
 - m.insert(pair<int,char*>(1,"apple"));
 - m.insert(pair<int,char*>(1,"pear"));//apple和pear的价钱完全有可能是一样的
 - m.insert(pair<int,char*>(2,"banana"));
 - //multimap的遍历只能用迭代器方式不能用数组
 - cout<<"***************************************"<<endl;
 - multimap<int,char*>::iterator i,iend;
 - iend=m.end();
 - for(i=m.begin();i!=iend;i++)
 - {
 - cout<<(*i).second<<"的价钱是"
 - <<(*i).first<<"元/斤\n";
 - }
 - cout<<"***************************************"<<endl;
 - //元素的反相遍历
 - multimap<int,char*>::reverse_iterator j,jend;
 - jend=m.rend();
 - for(j=m.rbegin();j!=jend;j++)
 - {
 - cout<<(*j).second<<"的价钱是"
 - <<(*j).first<<"元/斤\n";
 - }
 - cout<<"***************************************"<<endl;
 - //元素的搜索find(),pair<iterator,iterator>equal_range(const key_type &k)const
 - //和multiset的用法一样
 - multimap<int,char*>::iterator s;
 - s=m.find(1);//find()只要找到一个就行了,然后立即返回。
 - cout<<(*s).second<<" "
 - <<(*s).first<<endl;
 - cout<<"键值等于1的元素个数是:"<<m.count(1)<<endl;
 - cout<<"***************************************"<<endl;
 - //删除 erase(),clear()
 - m.erase(1);
 - for(i=m.begin();i!=iend;i++)
 - {
 - cout<<(*i).second<<"的价钱是"
 - <<(*i).first<<"元/斤\n";
 - }
 - return 0;
 - }
 
C++11中map的用法的更多相关文章
- STL中map的用法
		
map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成有可能在我们处理一对一数据的时候 ...
 - C语言  ·  C++中map的用法详解
		
转载自:http://blog.csdn.net/sunquana/article/details/12576729 一.定义 (1) map<string, int> Map ...
 - [转]Java中Map的用法详解
		
转载地址:http://www.zhixing123.cn/jsp/30113.html Map简介 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 Dictio ...
 - Java中Map的用法
		
Map的一般用法 1.声明一个Map : Map map = new HashMap(); 2 .向map中放值 ,注意: map是key-value的形式存放的,如: map.put("s ...
 - Java中Map的用法详解
		
Map简介 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值.此接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口. Map 接口提供三种collecti ...
 - java中Map的用法(HaspMap用法)
		
public interface Map<K,V> 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. import java.util.HashMap; impo ...
 - C++中map的用法
		
map的特性是,所有元素都会根据元素的减值自动被排序.map的所有元素都是pair,同时拥有实值(value)和键值(key).pair的第一个元素会被视为键值,第二个元素会被视为实值.map不允许两 ...
 - C++中Map常见用法以及按照value排序
		
今天做一个简单的算法题,居然用了1个小时,STL unordered_map用多了,没想到map这次派上了用场,这里记录一下: 算法题为 给一个字符串例如 abaaba,每连续两个字符组成一个子串 ...
 - JS中Map的用法
		
声明 var map = new Map(); 设值 map.set("key","value"); 取值 map.get("key"); ...
 
随机推荐
- Java IO学习--(三)通道
			
Java IO中的管道为运行在同一个JVM中的两个线程提供了通信的能力.所以管道也可以作为数据源以及目标媒介. 你不能利用管道与不同的JVM中的线程通信(不同的进程).在概念上,Java的管道不同于U ...
 - cookie的增删改查函数
			
function setCookie(name,value,expires,path,domain){ //设置过期时间 var oDate = new Date(); oDate.setDate(o ...
 - Oracle表空间和表的常用操作指令
			
查看端口号指令 netstat –a 设置: set pagesize 100; //设置每页显示的行数set linesize 200; //设置每页显示的字符数 空格也算col 列名A for a ...
 - Unity使用C++作为游戏逻辑脚本的研究(二)
			
文章申明:本文来自JacksonDunstan的博客系列文章内容摘取和翻译,版权归其所有,附上原文的链接,大家可以有空阅读原文:C++ Scripting( in Unity) 上一篇文章写完,有同学 ...
 - Error filterStart的问题
			
今天出现这个问题 严重: Error filterStart org.apache.catalina.core.StandardContext start 严重: Context startup fa ...
 - Java Web开发中路径问题小结
			
Java Web开发中,路径问题是个挺麻烦的问题,本文小结了几个常见的路径问题,希望能对各位读者有所帮助. (1) Web开发中路径的几个基本概念 假设在浏览器中访问了如下的页面,如图1所示: 图1 ...
 - JMM规范
			
JMM规范: The rules for happens-before are: Program order rule. Each action in a thread happens-before ...
 - R贡献文件中文
			
贡献文件 注意: 贡献文件的CRAN区域被冻结,不再被主动维护. 英文 --- 其他语言 手册,教程等由R用户提供.R核心团队对内容不承担任何责任,但我们非常感谢您的努力,并鼓励大家为此列表做出贡献! ...
 - RabbitMQ在windows系统安装部署文档
			
1.RabbitMQ简介 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出入队列的消息(针对应用程序的数据)来通信,而无需专用连接来链接它 ...
 - AUTOSAR-关于配置文件的思考
			
基于Can: 1. Can_Cfg.h contains compile time configurations. It should be included by Can.h which is sp ...