Cocos2dx 3.0 過渡篇(九)淺談容器Map
尊重原創,轉載請注明來自:star特530的CSDN博客 https://blog.csdn.net/start530/article/details/19284301
本篇接著上一篇的容器繼續嘮叨,了解上一篇:https://blog.csdn.net/start530/article/details/19170853
既然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<std::string,Sprite*>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)
- }
- 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做運動
恩,天氣不錯,就寫到這吧,再多寫一點又要露餡了....
尊重原創,轉載請注明原址:https://blog.csdn.net/start530?viewmode=contents
最後更新:2017-04-03 12:56:12