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