cocos2d-x学习笔记(5)Value和vector

原创 2015年11月18日 17:56:58

Value

Value的所有构造函数:

 Value();
    
    /** Create a Value by an unsigned char value. */
    explicit Value(unsigned char v);
    
    /** Create a Value by an integer value. */
    explicit Value(int v);
    
    /** Create a Value by a float value. */
    explicit Value(float v);
    
    /** Create a Value by a double value. */
    explicit Value(double v);
    
    /** Create a Value by a bool value. */
    explicit Value(bool v);
    
    /** Create a Value by a char pointer. It will copy the chars internally. */
    explicit Value(const char* v);
    
    /** Create a Value by a string. */
    explicit Value(const std::string& v);
    
    /** Create a Value by a ValueVector object. */
    explicit Value(const ValueVector& v);
    /** Create a Value by a ValueVector object. It will use std::move internally. */
    explicit Value(ValueVector&& v);
    
    /** Create a Value by a ValueMap object. */
    explicit Value(const ValueMap& v);
    /** Create a Value by a ValueMap object. It will use std::move internally. */
    explicit Value(ValueMap&& v);
    
    /** Create a Value by a ValueMapIntKey object. */
    explicit Value(const ValueMapIntKey& v);
    /** Create a Value by a ValueMapIntKey object. It will use std::move internally. */
    explicit Value(ValueMapIntKey&& v);

在创建Value时,往构造函数里传入一个值,Value就会自动根据这个值来决定自己的类型。在获取Value的值时调用as**函数来获取:

Value valStr = Value("XiaoRuo is ");
    Value valInt = Value(250);

    log("%s%d", valStr.asString().c_str(), valInt.asInt());


Vector,实际上它封装了C++的vector容器类。

 Label* label1 = Label::create("XiaoRuoNo.1", "Arial", 30);
    label1->setPosition(Point(250, 400));

    Label* label2 = Label::create("XiaoRuoNo.2", "Arial", 30);
    label2->setPosition(Point(250, 200));

    // 创建Vector对象
    Vector<Label*> vec;

    // 把2个Label存放到Vector中
    vec.pushBack(label1);
    vec.pushBack(label2);

    // 遍历Vector,取出所有Label,添加到场景
    for (auto lab : vec)
    {
        this->addChild(lab);
    }
Vector的一些常用函数:

size():返回Vector存放的对象个数;

at(index):返回Vector某个对象,index为下标值;

front():返回Vector的第一个对象,也就是最先加到Vector的对象;

back():返回Vector的最后一个对象;

pushBack(object):在Vector的最后添加一个object对象;

eraseObject(object):从Vector中删除object对象;

erase(index):从Vector中删除下标在index处的对象;

clear();清空Vector,也就是删除所用对象。



Map:

Map<int, Label*> xiaoRuoMap;

    // 创建100个小若,并保存到Map中
    for (int i = 1; i <= 100; i++)
    {
        // 组合小若的名字
        std::string name = "XiaorRuoNo." + Value(i).asString();

        // 创建Label对象,代表小若
        Label* lab = Label::create(name.c_str(), "Arial", 30);

        // 保存小若Label到Map中,用i作为key,用lab作为value
        xiaoRuoMap.insert(i, lab);
    }

    // 今天约了No.23的小若,我们把她约出来
    Label* xiaoRuoLab = xiaoRuoMap.at(23);
    xiaoRuoLab->setPosition(Point(200, 200));
    this->addChild(xiaoRuoLab);
    return true;


Vector和Map的区别:

Vector保存对象默认是按顺序的,从中获取对象时只能通过下标的方式。而Map保存对象是没有顺序的,它只是保存了key值和value值的对应关系,获取对象事,只需要提供key值就可以。而且Map的key值可以是任何类型,不一定是int型。


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

小for的Cocos2d-x学习笔记与感悟5之拖动(Touch)事件

今天索性再写一篇了,其实代码已经实现了,只是笔记还没整理,整好了去吃饭了!今天收获还是不小的。 额,前面搞忘了习惯性的加一句: 本文小for原创,转载请注明出处。 正文开始。 拖动(Touch)事件和...

Cocos2d-x学习笔记(5)

Cocos2d-x基本元素介绍:

cocos2d-x学习笔记(5)-- CCScene场景的切换

cocos2d-x学习笔记(5)-- CCScene场景的切换 本文出自http://www.wenbanana.com稻草人博客,欢迎访问! step1:创建一个cocos2d-win32 ...

Cocos2D-X2.2.3学习笔记5(UI系统)

前言: 1.字体

cocos2d-x 3.1.1 学习笔记[5]ControlButton 会自动缩放的按钮

//创建只有文字按钮 // ControlButton *lblBtn = ControlButton::create("zhouyunxuan", "fonts/PaintBoy.ttf", ...

cocos2d-x初探学习笔记(5)--动作管理

小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man 1.停止此动作,开始下一个动作 ...

【cocos2d-x游戏开发】Value、Vector、Map

这三个常用的类是在cocos2d-x3.0新添加的。

Cocos2d-x 3.0final 终结者系列教程12-Vector&map&value

在做Cocos2d-x2.0人的人们估计正在使用CCArray,CCDirectionary,CCDouble,CCFloat这些正搞得很爽,但不得不说 它们在V3.0中不用了。 看下3.0中的数据结...
  • sdhjob
  • sdhjob
  • 2014-05-30 10:06
  • 1976
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)