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类      Vectorvec(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

你可能感兴趣的:(cocos2d-x3.0新增的Vector类,cocos2d-x3.0新的数据结构)