Cocos2dx 3.0 过渡篇(九)浅谈容器Map

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: <p style="color:rgb(54,46,43); font-family:Arial; font-size:14px; line-height:26px"> 尊重原创,转载请注明来自:star特530的CSDN博客 <a target="_blank" href="http://blog.csdn.net/start530/article/details/19284301"

尊重原创,转载请注明来自:star特530的CSDN博客 http://blog.csdn.net/start530/article/details/19284301


本篇接着上一篇的容器继续唠叨,了解上一篇:http://blog.csdn.net/start530/article/details/19170853

既然Vector是对比Array,那么Map就对比Dictionary吧。
1、创建

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. auto sp1 = Sprite::create("CloseNormal.png");  
  2. sp1->setPosition(Point(100,100));  
  3. this->addChild(sp1,1);  
  4.   
  5. auto sp2 = Sprite::create("CloseSelected.png");  
  6. sp2->setPosition(Point(100,200));  
  7. this->addChild(sp2,1);  

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. //创建容器  
  2. Alpha:  
  3.     auto sp_dic = Dictionary::create();//创建一个字典  
  4. beta:  
  5.     //建立一个关联容器map,第一个参数是string型的key,第二个参数是Sprite类的key值  
  6.     Map<std::string,Sprite*>sp_map;  

2、将对象放入到容器中

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. Alpha:  
  2.     sp_dic->setObject(sp1,"sp1");//将精灵放入字典中,第二个参数是精灵在字典中的key  
  3.     sp_dic->setObject(sp2,"sp2");  
  4. beta:  
  5.     sp_map.insert("sp1",sp1);//将精灵放入容器中,第一个参数是key  
  6.     sp_map.insert("sp2",sp2);  

3、取出容器中的元素
   map是 键-值 对的集合。map类型通常可以理解为关联数组,Vector容器可以使用类似数组a[0],a[2]这种下标的方式获得容器内的元素,Map容器也是可以通过下标的方式获取,但 下标是指元素特定的键 ,而不是通过在数组中的位置。

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. Alpha:  
  2.     auto sp = (Sprite*)sp_dic->objForKey("sp1");//取出sp1  
  3. beta:  
  4.     auto sp = sp_vec.at("sp1");//通过键值获得sp1  

4、其他功能

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. auto sp5 = sp_map.at("sp1");//通过key取出sp1  
  2. sp_map.insert("10",sp5);//再将sp1 以三个key值的方式存入map  
  3. sp_map.insert("20",sp5);  
  4. sp_map.insert("30",sp5);  
  5.   
  6. auto _key = sp_map.keys(sp1);//获得sp1对应的key值  
  7. for(const auto&e : _key)  
  8. {  
  9.     //C++ 11 后新增的这种for 功能,不懂的可以去百度下  
  10.     CCLOG("_key is %s",e.c_str());//输出sp1 对应的key值(有四个,分别是:sp1,10,20,30)  
  11. }  
Map对象的元素是键-值对,也就是每个元素包含两个部分:键以及由键关联的值。这种键和键值组成一个pair类型,它的f irst元素指向键,second元素则为元素 。如下:

[cpp]  view plain copy 在CODE上查看代码片 派生到我的代码片
  1. auto find_sp = sp_map.find("10");//通过find()查找key为“10”的pair类型。  
  2. auto sp6 = find_sp->second;//键对应的对象  
  3. std::string find_str = find_sp->first;//键  
  4. CCLOG("sp6 key value is %s",find_str.c_str());//打印出键  
  5. sp6->runAction(MoveBy::create(0.3f,Point(200,0)));//让sp6做运动  



恩,天气不错,就写到这吧,再多写一点又要露馅了....

尊重原创,转载请注明原址http://blog.csdn.net/start530?viewmode=contents

相关文章
|
4月前
|
存储 C++ 索引
|
5月前
|
存储 算法 NoSQL
C++一分钟之-map与set容器详解
【6月更文挑战第21天】C++ STL的`map`和`set`是基于红黑树的关联容器,提供有序存储和高效查找。`map`存储键值对,键唯一,值可重复;`set`仅存储唯一键。两者操作时间复杂度为O(log n)。常见问题包括键的唯一性和迭代器稳定性。自定义比较函数可用于定制排序规则,内存管理需注意适时释放。理解和善用这些工具能提升代码效率。
59 3
|
5月前
|
存储 人工智能 C++
map容器在C++中的具体用法以及相关注意点
map容器在C++中的具体用法以及相关注意点
48 1
|
5月前
|
C++ 容器
C++ STL标准库 《map容器详解》
C++ STL标准库 《map容器详解》
42 0
|
5月前
|
存储 C++ 容器
C++ STL标准库 《map容器详解》
C++ STL标准库 《map容器详解》
66 0
|
5月前
|
C++ 容器
C++之map/multimap容器
C++之map/multimap容器
|
5月前
|
编译器 C++ 容器
通过红黑树封装 map 和 set 容器
通过红黑树封装 map 和 set 容器
|
5月前
|
存储 安全 C++
Map容器详解
Map容器详解
|
6月前
|
存储 缓存 安全
Golang深入浅出之-Go语言中的并发安全容器:sync.Map与sync.Pool
Go语言中的`sync.Map`和`sync.Pool`是并发安全的容器。`sync.Map`提供并发安全的键值对存储,适合快速读取和少写入的情况。注意不要直接遍历Map,应使用`Range`方法。`sync.Pool`是对象池,用于缓存可重用对象,减少内存分配。使用时需注意对象生命周期管理和容量控制。在多goroutine环境下,这两个容器能提高性能和稳定性,但需根据场景谨慎使用,避免不当操作导致的问题。
181 7
|
6月前
|
C++ 索引 容器
黑马c++ STL部分 笔记(9) map/multimap容器
黑马c++ STL部分 笔记(9) map/multimap容器

热门文章

最新文章