标签:cocos2dx 3.0 value vector find
本文投票地址:http://vote.blog.csdn.net/Article/Details?articleid=37834689
前天看到一个颇为纠结的选择题:有一天你遇到一个外星人,这时外星人很热情的邀请你到他们星球去玩,你如何选
1:去,但是你有可能永远不能在回来。int i = 10; CCArray _array = CCArray::create();//创建一个CCArray数组 _array->addObject(CCInteger::create(i));//将int型数据放入数组中如果要存储一个CCObject对象,又是用什么存呢?是的,又是CCArray:
CCSprite* sp = CCSprite::create("star.png");//创建一个精灵 ... _array->addObject(sp);//将精灵放入到数组中
auto sp = Sprite::create("star.png"); ... Vector<Sprite*> sp_vec;//创建一个Sprite*类型的容器 sp_vec.pushBack(sp);//将精灵放入到容器中如果对Vector的操作不是很熟悉,可以看之前的博客:http://blog.csdn.net/star530/article/details/19170853
typedef std::vector<Value> ValueVector;可以看出,ValueVector实际上就是一个存放Value类型元素的std::vector容器,这里和我之前的猜测有些出入。下面将几个int型数据存储到ValueVector中。
int a = 10; int b = 20; ValueVector val_vec; val_vec.push_back(Value(a)); val_vec.push_back(Value(b));
上面代码就是创建两个int型的变量,然后放入ValueVector中,其中要注意的是:因为ValueVector中只能存放Value类型的元素,所以int型的a、b变量必须转换成Value类型后才能放入到ValueVector中。
关于Value的一些用法,可以看之前的博客:http://blog.csdn.net/star530/article/details/21651751
------------------------------------------------------------------------------------------------------------
说到ValueVector,那就顺便提下它的一些简单操作:ValueVector star_val = FileUtils::getInstance()->getValueVectorFromFile("star.plist");不过用ValueVector读取的plist文件只局限于是该plist的格式的以array数组类型开头的,例如下面这种:
<array> <dict> <key>name</key> <string>star</string> <key>isCool</key> <string>yes</string> </dict> </array>如果是以dict字典类型开头的文件,则要换用ValueMap,这是下一篇的内容,先跳过。
int a = 10; std::string b = "star is so cool"; ValueVector star_val; star_val.push_back( Value(a) ); star_val.push_back( Value(b) );//放入ValueVector前都要先将类型转成Value类型
int a1 = star_val.at(0).asInt(); std::string b1 = star_val.at(1).asString(); CCLOG("a1 = %d ,b1 = %s",a1,b1);上面的代码比较容易理解,就是提取star_val中放在0和1位置上的元素,然后分别转成int型和string型。asInt()与asString()是Value用来实现类型转换的函数。
star_val.pop_back();//直接删除容器中最后一个元素2)用erase删除容器中的某一个元素?为什么我要在前面加个问号呢?假设我要删除star_val中的 元素a,代码如下:
auto star_iter = std::find(star_val.begin(),star_val.end(),a); star_val.erase(star_iter);上面两行代码信息量还是比较大的,首先我们要知道erase 删除的是由一个迭代器指向的单个元素,而不是直接这样:
这种操作是错误的,那么,什么是迭代器呢?我举个小例子:
“第3列、第5排那个搞小动作的童鞋......别指了,说的就是你,你特么给我滚出去”
star_val.clear();用clear删除全部元素,从根源上解决您生理上的困扰~
-----------------------------------------------------------------------------------------------------------------------
好了,ValueVector的用法说到这里,最后做下总结和补充:ValueVector star_val; ValueVector star_val2; star_val.push_back( Value(star_val2) );//正确 Vector< Vector<Ref*> > star_vec;//错误!
OK,就写到这里吧。
----------------------------------------------------------------------------------------------------------------------
尊重原创,转载请注明来源:http://blog.csdn.net/star530/article/details/37834689本文参加了CSDN博客大赛,如果你觉得该篇对你有所帮助,请给我投上一票吧!我这辈子都会感激你的!投票地址:
http://vote.blog.csdn.net/Article/Details?articleid=37834689(拉倒页面最下方即可投票)
Cocos2dx 3.0 过渡篇(三十一)ValueVector和Vector不得不说的故事,布布扣,bubuko.com
Cocos2dx 3.0 过渡篇(三十一)ValueVector和Vector不得不说的故事
标签:cocos2dx 3.0 value vector find
原文地址:http://blog.csdn.net/star530/article/details/37834689