cocos2dx标准容器_Cocos2dx 3.0 提高篇(九) 浅谈容器Map

本篇接着上一篇的容器继续唠叨,了解上一篇:外链网址已屏蔽

既然Vector是对比Array,那么Map就对比Dictionary吧。

1、创建

auto sp1 = Sprite::create("CloseNormal.png");

sp1->setPosition(Point(100,100));

this->addChild(sp1,1);

auto sp2 = Sprite::create("CloseSelected.png");

sp2->setPosition(Point(100,200));

this->addChild(sp2,1);

//创建容器

Alpha:

auto sp_dic = Dictionary::create();//创建一个字典

beta:

//建立一个关联容器map,第一个参数是string型的key,第二个参数是Sprite类的key值

Map<:string>sp_map;

2、将对象放入到容器中

Alpha:

sp_dic->setObject(sp1,"sp1");//将精灵放入字典中,第二个参数是精灵在字典中的key

sp_dic->setObject(sp2,"sp2");

beta:

sp_map.insert("sp1",sp1);//将精灵放入容器中,第一个参数是key

sp_map.insert("sp2",sp2);

3、取出容器中的元素

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

Alpha:

auto sp = (Sprite*)sp_dic->objForKey("sp1");//取出sp1

beta:

auto sp = sp_vec.at("sp1");//通过键值获得sp1

4、其他功能

auto sp5 = sp_map.at("sp1");//通过key取出sp1

sp_map.insert("10",sp5);//再将sp1 以三个key值的方式存入map

sp_map.insert("20",sp5);

sp_map.insert("30",sp5);

auto _key = sp_map.keys(sp1);//获得sp1对应的key值

for(const auto&e : _key)

{

//C++ 11 后新增的这种for 功能,不懂的可以去百度下

CCLOG("_key is %s",e.c_str());//输出sp1 对应的key值(有四个,分别是:sp1,10,20,30)

}Map对象的元素是键-值对,也就是每个元素包含两个部分:键以及由键关联的值。这种键和键值组成一个pair类型,它的first元素指向键,second元素则为元素。如下:

auto find_sp = sp_map.find("10");//通过find()查找key为“10”的pair类型。

auto sp6 = find_sp->second;//键对应的对象

std::string find_str = find_sp->first;//键

CCLOG("sp6 key value is %s",find_str.c_str());//打印出键

sp6->runAction(MoveBy::create(0.3f,Point(200,0)));//让sp6做运动

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

尊重原创,转载请注明原址:外链网址已屏蔽

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值