原文地址:http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html

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的基本操作和使用的更多相关文章

  1. c++ map 的基本操作

    Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本的构造函数:   map<stri ...

  2. C++中map的基本操作和使用;

    注:本文来自sina live 的博文 Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可以起到事半功倍的效果,总结了一些map基本简单实用的操作!1. map最基本 ...

  3. 【转】 C++ map的基本操作和使用

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

  4. 转载:C++ map的基本操作和使用

    声明:本文转自:http://www.cnblogs.com/hailexuexi/archive/2012/04/10/2440209.html 1.map简介 map是一类关联式容器.它的特点是增 ...

  5. map的基本操作函数及含义

    map的基本操作函数:      C++ Maps是一种关联式容器,包含“关键字/值”对      begin()          返回指向map头部的迭代器      clear()        ...

  6. cocos2d-x3.2中map的基本操作和使用

    在游戏开发中,我们有时候会用到map,而map的使用方法我简单给大家介绍一下.Map是c++的一个标准容器,她提供了非常好一对一的关系,在一些程序中建立一个map能够起到事半功倍的效果,总结了一些ma ...

  7. C++使用: C++中map的基本操作和用法

    在阅读SSD代码中发现作者使用了C++中的map方法,因此搜索该关联式容器的使用方法,在这里一并总结. 一.Map 簡介 Map是STL的一個容器,它提供一對一的hash. 第一個可以稱為關鍵字(ke ...

  8. 【转】C++ map的基本操作和使用

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

  9. C++STL之map的基本操作

    STL中基本的关联式容器有map和set,它们都是以红黑树作为其底层的结构,具有非常高的查找.删除效率,内容会按照键值自动排序. 使用map的注意事项: 1.关联式容器的键值是不允许修改的,所以永远不 ...

随机推荐

  1. Oracle安装部署,版本升级,应用补丁快速参考

    一.Oracle安装部署 1.1 单机环境 1.2 Oracle RAC环境 1.3 Oracle DataGuard环境 1.4 主机双机 1.5 客户端部署 二.Oracle版本升级 2.1 单机 ...

  2. ABAP单元测试最佳实践

    本文包含了我在开发项目中经历过的实用的ABAP单元测试指导方针.我把它们安排成为问答的风格,欢迎任何人添加更多的Q&A's,以完成这个列表. 在我的项目中,只使用传统的ABAP report. ...

  3. Log4Net应用问题

    问题 一.日志存储方式 1.txt 2.SQLServer数据库 3.log文件 二.项目类型不同 1winFrom 2webFrom 3MVC 4WPF 5控制台 三.切分依据不同 1.空间大小 2 ...

  4. HTML5 程序设计 - 使用HTML5 Canvas API

    请你跟着本篇示例代码实现每个示例,30分钟后,你会高喊:“HTML5 Canvas?!在哥面前,那都不是事儿!” 呵呵.不要被滚动条吓到,很多都是代码和图片.我没有分开写,不过上面给大家提供了目录,方 ...

  5. Pramp mock interview (4th practice): Matrix Spiral Print

    March 16, 2016 Problem statement:Given a 2D array (matrix) named M, print all items of M in a spiral ...

  6. 理解Storm并发

    作者:Jack47 PS:如果喜欢我写的文章,欢迎关注我的微信公众账号程序员杰克,两边的文章会同步,也可以添加我的RSS订阅源. 注:本文主要内容翻译自understanding-the-parall ...

  7. 史上最全Windows版本搭建安装React Native环境配置

    史上最全Windows版本搭建安装React Native环境配置 配置过React Native 环境的都知道,在Windows React Native环境配置有很多坑要跳,为了帮助新手快速无误的 ...

  8. 我的MYSQL学习心得(六) 函数

    我的MYSQL学习心得(六) 函数 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

  9. CSharpGL(32)矩阵与四元数与角度旋转轴的相互转换

    CSharpGL(32)矩阵与四元数与角度旋转轴的相互转换 三维世界里的旋转(rotate),可以用一个3x3的矩阵描述:可以用(旋转角度float+旋转轴vec3)描述.数学家欧拉证明了这两种形式可 ...

  10. 「标准」的 JS风格

    首先,这份 JS风格指南已经在我司的前端团队实行半年多了: 其次,在程序员的世界里,从入行到资深都需要面对几个世界级的难题,如: 世界上最好的编辑器是什么? 是用空格还是 TAB?用空格还特么衍生出 ...