cocos2d-x3.0新增的Vector类,cocos2d-x3.0新的数据结构

bool HelloWorld::init(){ ////////////////////////////// // 1. super init first if ( !Layer::init() ) { return false; } #pragma mark cocos2d-x3.0新增的Vector类 Vector
摘要由CSDN通过智能技术生成
bool HelloWorld::init()
{
    //
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }
    
#pragma mark cocos2d-x3.0新增的Vector类
    Vector<Node*> vec(10);
    log("%s",vec.empty() ? "Vector为空":"Vector不为空");
#pragma mark pushBack函数将对象添加到Vector末尾
    auto node1 = Node::create();
    node1->setTag(1);
    vec.pushBack(node1);
    auto node3 = Node::create();
    node3->setTag(3);
    vec.pushBack(node3);
    auto node5 = Node::create();
    node5->setTag(5);
    vec.pushBack(node5);
    auto node7 = Node::create();
    node7->setTag(7);
    vec.pushBack(node7);
    auto node2 = Node::create();
    node2->setTag(2);
    vec.pushBack(node2);
    auto node4 = Node::create();
    node4->setTag(4);
    vec.pushBack(node4);
    auto node6 = Node::create();
    node6->setTag(6);
    vec.pushBack(node6);
#pragma mark insert函数将对象插入到指定的位置
    auto node8 = Node::create();
    node8->setTag(8);
    vec.insert(1,node8);
#pragma mark empty函数判断Vector是否为空,为空返回true,否则返回false
    log("%s",vec.empty() ? "Vector为空":"Vector为不为空");
#pragma mark capacity函数返回当前存储空间的大小。
    log("Vector.capacity(): %i",(int)vec.capacity());
#pragma mark size函数返回Vector中元素的数量。
    log("Vector.size(): %i",(int)vec.size());
#pragma mark getIndex函数返回包含对象的索引
    log("node1在Vector中的索引: %i",(int)vec.getIndex(node1));
    log("node2在Vector中的索引: %i",(int)vec.getIndex(node2));
    log("for循环: ");
    for(int i = 0;i < vec.size();i++){
#pragma mark at函数根据下标返回元素
        log("取出对象并获取tag: %i",vec.at(i)->getTag());
    }
#pragma mark contains函数判断Vector是否包含元素,包含返回true,否则返回false
    log("%s",vec.contains(node1) ? "Vector包含node1":"Vector不包含node1");
#pragma mark reverse函数翻转Vector中的元素
    log("reverse(翻转)之后: ");
    vec.reverse();
    for (auto& child : vec) {
        log("取出对象并获取tag: %i",child->getTag());
    }
#pragma mark swap函数根据下标交换Vector中的元素
    vec.swap(0, 6);
    log("swap(交换)之后: ");
    for (auto& child : vec) {
        log("取出对象并获取tag: %i",child->getTag());
    }
#pragma mark C++标准库中的排序函数
    std::sort(vec.begin(), vec.end(), [](Node* a, Node* b){
        return a->getTag() < b->getTag();
    });
    log("sort排序之后: ");
    for (auto& child : vec) {
        log("取出对象并获tag: %i",child->getTag());
    }
#pragma mark back函数返回Vector最后一个元素
    vec.back()->setTag(9);
    log("back之后最后一个元素的tag: %i", vec.at(vec.size()-1)->getTag());
#pragma mark popBack函数删除最后一个元素
    vec.popBack();
    log("popBack之后Vector.size(): %i",(int)vec.size());
#pragma mark erase函数删除索引为1的元素
    vec.erase(2);
    log("erase(2)之后Vector.size(): %i",(int)vec.size());
#pragma mark eraseObject函数从Vector中删除指定的元素
    vec.eraseObject(node1);
    log("eraseObject(node1)之后Vector.size(): %i",(int)vec.size());
#pragma mark clear函数清除Vector所有元素
    vec.clear();
    log("clear之后%s",vec.empty() ? "Vector为空":"Vector为不为空");
    log("clear之后Vector.size(): %i",(int)vec.size());
    
   
    return true;
}

结果展示


Vector为空
Vector为不为空
Vector.capacity(): 10
Vector.size(): 8
node1在Vector中的索引: 0
node2在Vector中的索引: 5
for循环: 
取出对象并获取tag: 1
取出对象并获取tag: 8
取出对象并获取tag: 3
取出对象并获取tag: 5
取出对象并获取tag: 7
取出对象并获取tag: 2
取出对象并获取tag: 4
取出对象并获取tag: 6
Vector包含node1
reverse(翻转)之后: 
取出对象并获取tag: 6
取出对象并获取tag: 4
取出对象并获取tag: 2
取出对象并获取tag: 7
取出对象并获取tag: 5
取出对象并获取tag: 3
取出对象并获取tag: 8
取出对象并获取tag: 1
swap(交换)之后: 
取出对象并获取tag: 8
取出对象并获取tag: 4
取出对象并获取tag: 2
取出对象并获取tag: 7
取出对象并获取tag: 5
取出对象并获取tag: 3
取出对象并获取tag: 6
取出对象并获取tag: 1
sort排序之后: 
取出对象并获tag: 1
取出对象并获tag: 2
取出对象并获tag: 3
取出对象并获tag: 4
取出对象并获tag: 5
取出对象并获tag: 6
取出对象并获tag: 7
取出对象并获tag: 8
back之后最后一个元素的tag: 9
popBack之后Vector.size(): 7
erase(2)之后Vector.size(): 6
eraseObject(node1)之后Vector.size(): 5
clear之后Vector为空
clear之后Vector.size(): 0
2016-05-04 20:57:32.894 Font iOS[7575:335252] cocos2d: surface size: 960x640


  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值