zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    Java程序员之JS(一) 入门
    Java虚拟机(一)之开篇
    JDK/JRE/JVM区别与联系
    web开发视频(一)之环境准备
    Spring MVC 教程,快速入门,深入分析
    Java中“==和equals”的区别
    如何查看电脑最大支持多少GB内存
    win10 计算器calc命令打不开
    Win10图标显示不正常解决办法
    在系统右键菜单上添加程序
  • 原文地址:https://www.cnblogs.com/kingBook/p/5517089.html
Copyright © 2011-2022 走看看