原文地址: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. 最好的.NET开源免费ZIP库DotNetZip(.NET组件介绍之三)

    在项目开发中,除了对数据的展示更多的就是对文件的相关操作,例如文件的创建和删除,以及文件的压缩和解压.文件压缩的好处有很多,主要就是在文件传输的方面,文件压缩的好处就不需要赘述,因为无论是开发者,还是 ...

  2. Phantomjs+Nodejs+Mysql数据抓取(2.抓取图片)

    概要 这篇博客是在上一篇博客Phantomjs+Nodejs+Mysql数据抓取(1.抓取数据) http://blog.csdn.net/jokerkon/article/details/50868 ...

  3. 28个你必须知道的HTML5的新特性,技巧以及技术

    崭新新的页面布局 传统的: HTML5: 1. 新的Doctype 尽管使用<!DOCTYPE html>,即使浏览器不懂这句话也会按照标准模式去渲染 2. Figure元素 用<f ...

  4. cesium自定义气泡窗口infoWindow

    一.自定义气泡窗口与cesium默认窗口效果对比: 1.cesium点击弹出气泡窗口显示的位置固定在地图的右上角,默认效果: 2.对于习惯arcgis或者openlayer气泡窗口样式的giser来说 ...

  5. myrocks复制中断问题排查

    背景 mysql可以支持多种不同的存储引擎,innodb由于其高效的读写性能,并且支持事务特性,使得它成为mysql存储引擎的代名词,使用非常广泛.随着SSD逐渐普及,硬件存储成本越来越高,面向写优化 ...

  6. Greenplum 的分布式框架结构

    Greenplum 的分布式框架结构 1.基本架构 Greenplum(以下简称 GPDB)是一款典型的 Shared-Nothing 分布式数据库系统.GPDB 拥有一个中控节点( Master ) ...

  7. 微信小程序新单位rpx与自适应布局

    rpx是微信小程序新推出的一个单位,按官方的定义,rpx可以根据屏幕宽度进行自适应,在rpx出现之前,web页面的自适应布局已经有了多种解决方案,为什么微信还捣鼓出新的rpx单位?在解释这个单位前,我 ...

  8. Visual Studio Code 使用Git进行版本控制

    Visual Studio Code 使用Git进行版本控制 本来认为此类教程,肯定是满网飞了.今天首次使用VS Code的Git功能,翻遍了 所有中文教程,竟没有一个靠谱的.遂动笔写一篇. 请确保你 ...

  9. 《图解HTTP》读书笔记

    目前国内讲解HTTP协议的书是在太少了,记忆中有两本被誉为经典的书<HTTP权威指南>与<TCP/IP详解,卷1>,但内容晦涩难懂,学习难度较大.其实,HTTP协议并不复杂,理 ...

  10. 线程笔记:Future模式

    线程技术可以让我们的程序同时做多件事情,线程的工作模式有很多,常见的一种模式就是处理网站的并发,今天我来说说线程另一种很常见的模式,这个模式和前端里的ajax类似:浏览器一个主线程执行javascri ...