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 3.x 3.0版本的全新绘制系

Cocos2d-x Vector——vector iterators incompatible

Cocos2d-x+3.x游戏开发实战pdf

深入了解cocos2d-x 3.x定时器(scheduler)的使用和原理探究

Cocos2d-x 3.x部署到安卓