在游戏开发中,我们有时候会用到map,而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是一种关联式容器,包括“keyword/值”对

      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的函数

cocos2d-x3.2中map的基本操作和使用的更多相关文章

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

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

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

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

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

    原文地址:http://blog.sina.com.cn/s/blog_61533c9b0100fa7w.html Map是c++的一个标准容器,她提供了很好一对一的关系,在一些程序中建立一个map可 ...

  4. c++ map 的基本操作

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

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

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

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

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

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

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

  8. C++STL中map容器的说明和使用技巧(杂谈)

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

  9. C++11中map的用法

    最全的c++map的用法 1. map最基本的构造函数:map<string ,int>mapstring; map<int,string >mapint;map<sri ...

随机推荐

  1. Android定位功能

    不说废话,直接说说实现android定位有关的API吧. 这些API都在android.location包下,一共有三个接口和八个类.它们配合使用即可实现定位功能. 三个接口: GpsStatus.L ...

  2. C 和 C++ 的速度相差多少,你知道吗?

    有谁清楚这个事实吗 ? 网络游戏速度至关重要, 是游戏质量的唯一标准, 尤其是即时格斗, 相差几毫秒都会影响用户体验 ! 哪怕就是 5% 的效率损失,也是 差之毫厘,失之千里, 游戏的速度是程序语言天 ...

  3. 手机APP有三类:原生APP,WebAPP,HybridApp

    搭建 AngularJS+Ionic+Cordova 开发环境并运行一个demo 目前的手机APP有三类:原生APP,WebAPP,HybridApp:HybridApp结合了前两类APP各自的优点, ...

  4. 【LeetCode】【Python解决问题的方法】Best Time to Buy and Sell Stock II

    Say you have an array for which the ith element is the price of a given stock on day i. Design an al ...

  5. Linux 0.12 内核管理存储器

    Linux 0.12 内核管理存储器 其分段,用分段的机制把进程间的虚拟地址分隔开. 每一个进程都有一张段表LDT.整个系统有一张GDT表.且整个系统仅仅有一个总页表. 其地址翻译过程为: 程序中给出 ...

  6. JAVA jdbc(数据库连接池)学习笔记(转)

    学习内容: 1.JDBC的含义... JDBC想必学过JAVA的就不会陌生,JDBC到底是什么呢?其实就是由JAVA的一些类和接口构成的API,保存在java.sql和javax.sql..包中的一些 ...

  7. Xcode 5.1.1 与 Xcode 6.0.1 共存

    Xcode 5.1.1 (下面简称Xcode5)和Xcode 6.0.1(下面简称Xcode6)都是正式版本号.其应用程序文件名称都是"Xcode".假设通过AppStore升级或 ...

  8. 【PullToRefresh 系列基本用法】 Android装上拉下拉刷新控制具体的解释

    转载请注明:http://blog.csdn.net/duguang77/article/details/40921601 作者信息: Chris Banes大神详情:https://github.c ...

  9. Java OCR tesseract 图像智能字符识别技术 Java代码实现

    接着上一篇OCR所说的,上一篇给大家介绍了tesseract 在命令行的简单用法,当然了要继承到我们的程序中,还是需要代码实现的,下面给大家分享下java实现的例子. 拿代码扫描上面的图片,然后输出结 ...

  10. Appium0.18.x迁移到Appium1.x须知事项(灰常实用,解答了本人几个疑问)

    英文原版:https://github.com/appium/appium/blob/master/docs/en/advanced-concepts/migrating-to-1-0.md Migr ...