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

  Array是一个列表类容器,是一种线性序列结构;列表容器中的元素是有序的,可以通过下标来访问,就和数组一样。其中Vector也是一种列表容器,但是Array的缺陷是不能自动增长,而Vector却可以。

Array的创建函数:

  /** Creates an empty array. Default capacity is 10  创建_Array*/
static __Array* create();
/** Create an array with objects 使用一系列Ref创建_Array*/
static __Array* create(Ref* object, ...) CC_REQUIRES_NULL_TERMINATION;
/** Create an array with one object 使用一个Ref创建_Array*/
static __Array* createWithObject(Ref* object);
/** Create an array with a default capacity创建_Array,并设置容量 */
static __Array* createWithCapacity(ssize_t capacity);
/** Create an array with from an existing array 用一个已经存在的_Array来创建另一个_Array*/
static __Array* createWithArray(__Array* otherArray);
/** @brief Generate a Array pointer by file,param pFileName The file name of *.plist file
return The Array pointer generated from the file从属性列表文件创建_Array*/
static __Array* createWithContentsOfFile(const std::string& pFileName);
/*@brief The same meaning as arrayWithContentsOfFile(), but it doesn't call autorelease, so the
invoker should call release().*/
static __Array* createWithContentsOfFileThreadSafe(const std::string& pFileName);

常用添加元素函数:

向_Array对象中添加元素都必须是Ref和其子类的对象指针类型。

 /** Add a certain object 添加一个元素*/
void addObject(Ref* object);
/** Add all elements of an existing array 把一个已经存在的__Array对象中的所有元素添加到当前的__Array中*/
void addObjectsFromArray(__Array* otherArray);
/** Insert a certain object at a certain index在指定的位置插入元素,ssize_t是int类型的别名*/
void insertObject(Ref* object, ssize_t index);

常用移除函数:

 /** Remove last object 移除最后一个元素*/
void removeLastObject(bool releaseObj = true);
/** Remove a certain object 移除Array中的某个元素*/
void removeObject(Ref* object, bool releaseObj = true);
/** Remove an element with a certain index 移除一个指定位置的元素*/
void removeObjectAtIndex(ssize_t index, bool releaseObj = true);
/** Remove an objects 移除某个数组_Array对象*/
void removeObjectsInArray(__Array* otherArray);
/** Remove all elements 移除所有的元素*/
void removeAllObjects();
/** Fast way to remove a certain object 快速移除某个元素,把数组的最后一个元素(数值的最后一个远足是NULL)赋值给要删除的元素,但是要注意,这会改变原有与元素的顺序*/
void fastRemoveObject(Ref* object);
/** Fast way to remove an element with a certain index 快速的移除某个指定位置的元素,与fastRemoveObject函数类似*/
void fastRemoveObjectAtIndex(ssize_t index);

替换和交换元素的函数

 /** Swap two elements 交换两个元素*/
void exchangeObject(Ref* object1, Ref* object2);
/** Swap two elements with certain indexes 交换两个指定位置的元素*/
void exchangeObjectAtIndex(ssize_t index1, ssize_t index2);
/** Replace object at index with another object. 用一个对象替代指定位置的元素*/
void replaceObjectAtIndex(ssize_t index, Ref* object, bool releaseObject = true);

其他函数:

 /** Revers the array 反转Array */
void reverseObjects();
/**判断Array对象是否相等*/
bool isEqualToArray(__Array* otherArray);
/** Returns a random element 随机返回元素*/
Ref* getRandomObject();
/** Returns a Boolean value that indicates whether object is present in array.返回某个元素是否存在Array容器中*/
bool containsObject(Ref* object) const;
/**统计Array的大小*/
ssize_t count();

实例:

.h files

#ifndef _ARRAYTEST_SCENE_H_
#define _ARRAYTEST_SCENE_H_
#include "cocos2d.h"
class arrayTest : public cocos2d::Layer
{
private:
public:
static cocos2d::Scene* createScene();
virtual bool init();
void arrTest();
CREATE_FUNC(arrayTest);
};
#endif // _ARRAYTEST_SCENE_H_ .cpp files #include "ArrayTest.h"
USING_NS_CC;
Scene* arrayTest::createScene()
{
// 'scene' is an autorelease object
auto scene = Scene::create();
// 'layer' is an autorelease object
auto layer = arrayTest::create();
// add layer as a child to scene
scene->addChild(layer);
// return the scene
return scene;
}
bool arrayTest::init()
{
if (!Layer::init())
{
return false;
}
arrTest();
return true;
} void arrayTest::arrTest()
{
//1.创建一个Array
Array* arr = Array::create(); //2.添加元素
arr->addObject(String::create("I "));
arr->addObject(String::create("love"));
arr->addObject(String::create(" China!"));
arr->addObject(String::create("values = 123456")); //3.获得大小
int size = arr->count();
CCLOG("The array size is : count = %d", size);
for (int i = 0; i < size; i++)
{
String* e = (String*)arr->getObjectAtIndex(i);
CCLOG("%s", e->getCString());
} //4.根据索引获得某个元素
String* elem = (String*)arr->getObjectAtIndex(2);
CCLOG("%s", elem->getCString()); //5.删除某个元素
arr->removeObjectAtIndex(3); //6.遍历
size = arr->count();
for (int i = 0; i < size; i++)
{
String* e = (String*)arr->getObjectAtIndex(i);
CCLOG("%s", e->getCString());
}
}

最新文章

  1. 容器--TreeMap
  2. 2016 2 - 23 arc中的所有权修饰符(_strong修饰符与_weak修饰符)
  3. {CSDN}{英雄会}{火车调度}
  4. string s = null 和 string s = “”的区别
  5. Sqoop增量从MySQL中向hive导入数据
  6. C++三种内存分配方式
  7. 安装Hadoop系列 — 安装Hadoop
  8. Debug your C# project more efficiently
  9. web 前端 shopnc项目 首页分类一开始做前端,我是拒绝的
  10. 《转载》使用CSS3 Flexbox布局
  11. TCP/IP具体解释--nagle算法和TCP_NODELAY
  12. 你应该知道的jQuery技巧【收藏】
  13. SharePoint 2010 电子书下载网站推荐
  14. C++教程之初识编程
  15. Fundebug后端Java异常监控插件更新至0.2.0,支持Spring及Maven
  16. ASP 运行结果显示空白 --- 是编码的原因。
  17. linux普通用户提权
  18. Python笔记(八):web开发
  19. Oracle11g口令过期的解决
  20. Maven Debug

热门文章

  1. hdu4352 XHXJ&#39;s LIS(数位dp)
  2. iBatis——自动生成DAO层接口提供操作函数(详解)
  3. Linux文件行排序
  4. JS高级 —— 普通函数、构造函数、对象方法的调用
  5. 屏蔽命令任何输出的:&gt;/dev/null 2&gt;&amp;1
  6. BZOJ3227 [sdoi2008]红黑树
  7. 423 Locked
  8. Window下设置Octave
  9. 【leetcode】1008. Construct Binary Search Tree from Preorder Traversal
  10. vue cli 项目中设置背景图