std::vector<int> intList;
for (int i = 0; i < 5; i++) {
intList.push_back(i);
if (i == 2)
{
intList.push_back(i);
}
}
intList.pop_back();//移除最后一个
intList.erase(intList.begin());//移除第一个
for(int i : intList)
{
log("this is %d", i);
}
std::for_each(intList.begin(), intList.end(),[](int& x){
log("for_each: %d", x);
});
//由end操作返回的迭代器指向vector的"末端元素的下一个"。通常称为超出末端迭代器(off-the-end iterator),表明它指向了一个不存在的元素。如果vector为空,begin返回的迭代器与end返回的迭代器相同。
std::vector<int>::iterator b = intList.begin();
std::vector<int>::iterator e = intList.end();
while (b != e)
{
log("iterator pointer to %d", *b);
++b;
}
log("this size is %lu", intList.size());
Vector<Sprite*> spList;
for (int i = 0; i < 5; i++)
{
auto sp = Sprite::create("splash.png");
sp->setTag(i+1);
spList.pushBack(sp);
}
spList.popBack();//移除最后一个
spList.erase(0);//移除第一个
auto sp = Sprite::create();
sp->setTag(998);
spList.pushBack(sp);
for(auto sp : spList)
{
log("tag is %d", sp->getTag());
}
/*
cocos2d: tag is 2
cocos2d: tag is 3
cocos2d: tag is 4
cocos2d: tag is 998
*/
spList.pushBack(sp);
spList.pushBack(sp);
log("erase previously is %lu", spList.size());//6
spList.eraseObject(sp);
log("erase late is %lu", spList.size());//5,说名只会移除第一个
spList.eraseObject(sp);
spList.eraseObject(sp);
spList.eraseObject(sp);spList.eraseObject(sp);
spList.eraseObject(sp);spList.eraseObject(sp);
spList.eraseObject(sp);spList.eraseObject(sp);
spList.eraseObject(sp);spList.eraseObject(sp);
spList.eraseObject(sp);spList.eraseObject(sp);
//移除多次不会报错
log("last size is %lu", spList.size());//3