C++小知识之Map用法
Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些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 find 112"<<endl;
    else cout<<"wo find 112"<<endl;
 4,map中元素的删除:
    如果删除112;
    map<int ,string >::iterator l_it;;
    l_it=maplive.find(112);
    if(l_it==maplive.end())
         cout<<"we do not find 112"<<endl;
    else  maplive.erase(l_it);  //delete 112;
 5,map中 swap的用法:
   Map中的swap不是一个容器中的元素交换,而是两个容器交换;
   For example:
   #include <map>
   #include <iostream>
using namespace 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 m1 is:";
    for ( m1_Iter = m1.begin( ); m1_Iter != m1.end( ); m1_Iter++ )
       cout << " " << m1_Iter->second;
       cout   << "." << endl;
// This is the member function version of swap
    //m2 is said to be the argument map; m1 the target map
    m1.swap( m2 );
cout << "After swapping 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, map m2 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 << "After swapping 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>
using namespace 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 m1 is:"<<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的函数
C++小知识之Map用法的更多相关文章
- 转:栈和队列小知识【STL用法】
		
原文出处:http://blog.csdn.net/chenzhenyu123456/article/details/44519943 栈: (一)头文件 #include<stack> ...
 - C++小知识之sprintf用法
		
sprintf 字串格式化命令,主要功能是把格式化的数据写入某个字符串中.sprintf 是个变参函数,使用时经常出问题,而且只要出问题通常就是能导致程序崩溃的内存访问错误,但好在由sprintf ...
 - 【c++小知识】static用法浅析
		
一.前言 C++的关键字static分两种用法,在面向过程程序设计(c语言中的普通变量和函数)中的使用和在面向对象程序设计(c++中的类)中的使用 二.面向过程程序设计中的static(静态变量.静态 ...
 - ES6基础知识(Map用法)
		
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
 - C++小知识之Vector用法
		
tyle="margin:20px 0px 0px; font-size:14px; line-height:26px; font-family:Arial; color:rgb(51,51 ...
 - 12个你未必知道的CSS小知识
		
虽然CSS并不是一种很复杂的技术,但就算你是一个使用CSS多年的高手,仍然会有很多CSS用法/属性/属性值你从来没使用过,甚至从来没听说过. 1.CSS的color属性并非只能用于文本显示 对于CSS ...
 - C++中的STL中map用法详解(转)
		
原文地址: https://www.cnblogs.com/fnlingnzb-learner/p/5833051.html C++中的STL中map用法详解 Map是STL的一个关联容器,它提供 ...
 - python小技巧 小知识
		
python小技巧 小知识 python系统变量(修改调用shell命令路径)或用户空间说明 20150418 python调用系统命令,报找不到.怎么办? 类似执行shell的: [ -f /etc ...
 - Linux小知识:rm -rf/*会将系统全部删除吗
		
Linux小知识:rm -rf/*会将系统全部删除吗 本文是学习笔记,视频地址为:https://www.bilibili.com/video/av62839850 执行上面的命令并不会删除所有内容( ...
 
随机推荐
- UVALive 3635 Pie 切糕大师 二分
			
题意:为每个小伙伴切糕,要求每个小盆友(包括你自己)分得的pie一样大,但是每个人只能分得一份pie,不能拿两份凑一起的. 做法:二分查找切糕的大小,然后看看分出来的个数有没有大于小盆友们的个数,它又 ...
 - sql中在查询语句中加判断,控制输出的内容
			
Case具有两种格式.简单Case函数和Case搜索函数. --简单Case函数 CASE sex WHEN '1' THEN '男' WHEN '2' THEN '女' ELSE '其他' END ...
 - JavaScript 字符串实用常用操作
			
字符串截取1. substring()xString.substring(start,end)substring()是最常用到的字符串截取方法,它可以接收两个参数(参数不能为负值),分别是要截取的开始 ...
 - 第三章SignalR在线聊天例子
			
第三章SignalR在线聊天例子 本教程展示了如何使用SignalR2.0构建一个基于浏览器的聊天室程序.你将把SignalR库添加到一个空的Asp.Net Web应用程序中,创建用于发送消息到客户端 ...
 - oracle 如何重置用户密码
 - Quartz 2D官方文档翻译(持续更新中)
			
转换 核心绘图模型定义了两个完全独立的坐标空间:用户空间,一个是代表文档页,和设备空间,另外一个代表本机设备的分辨率.用户空间坐标是与设备空间中像素分辨率无关的浮点数字.当你想要打印或者显示你的文档 ...
 - OC字符串的常用方法
			
网上写的关于字符串常用方法的博客很多,这里我简单做了下总结!不喜勿喷哦! 一.创建字符串 #import <Foundation/Foundation.h> //NSString //创建 ...
 - Linux学习之服务器端口查看的方法
			
1.用netstat查看: [grid@rac121 admin]$ netstat -anp | grep oracle (Not all processes could be identified ...
 - OC语法10——@protocol协议,
			
参考资料:博客 @protocol,协议: OC中protocol的含义和Java中接口的含义是一样的,它们的作用都是为了定义一组方法规范. 实现此协议的类里的方法,必须按照此协议里定义的方法规范来. ...
 - System.DateTime的一些格式
			
//2008年4月24日 System.DateTime.Now.ToString("D"); //2008-4-24 System.DateTime.Now.To ...