cocos2d-x3.x Vector
Posted kingBook
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了cocos2d-x3.x Vector相关的知识,希望对你有一定的参考价值。
auto sp0 = Sprite::create(); sp0->setTag(0); auto sp1 = Sprite::create(); sp1->setTag(1); //这里使用了 shared_ptr,在你的代码中,请使用栈对象替代 std::shared_ptr<Vector<Sprite*>> vec0 = std::make_shared<Vector<Sprite*>>(); vec0->pushBack(sp0); Vector<Sprite*> vec1(5); vec1.insert(0, sp1); //也可以加入一整个 vector vec1.pushBack(*vec0); for(auto sp : vec1){ log("sprite tag: %d", sp->getTag()); } Vector<Sprite*> vec2(*vec0); if (vec0->equals(vec2)) { log("vec0==vec2"); } if (!vec1.empty()) { //获取 vector 的 capacity 和 size,要注意的是 capacity 并不一定等于 size if (vec1.capacity() == vec1.size()) { log("pVec1->capacity()==pVec1->size()"); }else{ vec1.shrinkToFit(); //收缩 vector 以便内存对应上元素的数量,capacity是容量,size才是元素的数量 log("pVec1->capacity()==%d; pVec1->size()==%d",vec1.capacity(),vec1.size()); } //pVec1->swap(0, 1); //通过索引交换 vector 中的两个元素 vec1.swap(vec1.front(), vec1.back()); //通过值交换 vector 中的两个元素 if (vec2.contains(sp0)) { //返回一个布尔值,用于指示该对象是否存在于 vector 中 log("The index of sp0 in pVec2 is %d",vec2.getIndex(sp0)); } //从 vector 中移除元素 vec1.erase(vec1.find(sp0)); //pVec1->erase(1); //pVec1->eraseObject(sp0,true); //pVec1->popBack(); vec1.clear(); //移除所有元素 log("The size of pVec1 is %d",vec1.size()); }
输出:
sprite tag: 1 sprite tag: 0 vec0==vec2 pVec1->capacity()==2; pVec1->size()==2 The index of sp0 in pVec2 is 0 The size of pVec1 is 0
以上是关于cocos2d-x3.x Vector的主要内容,如果未能解决你的问题,请参考以下文章
数组与字符串三(Cocos2d-x 3.x _Array容器)
Cocos2d-x Vector——vector iterators incompatible