如果說C++的vector容器怎麼用,如果我說太多肯定一下子就暴露了我菜鳥的身份。所以呢,在這裏不過多闡述,也請大神繞路。
所以,還是回到Vector的使用問題上吧。該怎麼用?既然Vector是替代了Array,那就拿Array 和Vector進行對比吧。
下面我就以創建 Sprite 精靈對象的容器爲例介紹吧
1、創建
先創建兩個精靈:
1.
auto
sp1 = Sprite::create(
"CloseNormal.png"
);
2.
sp1->setPosition(Point(
100
,
100
));
3.
this
->addChild(sp1,
1
);
4.
5.
auto
sp2 = Sprite::create(
"CloseSelected.png"
);
6.
sp2->setPosition(Point(
100
,
200
));
7.
this
->addChild(sp2,
1
);
創建容器
1.
Alpha:
2.
auto
sp_array = Array::create();
3.
beta:
4.
Vector<Sprite*>
sp_vec;
2、將創建好的精靈添加進容器中
1.
Alpha:
2.
sp_array->addObject(sp1);
3.
sp_array->addObject(sp2);
4.
5.
6.
beta:
7.
sp_vec.pushBack(sp1);
//和
堆棧 一樣一樣的
8.
sp_vec.pushBack(sp2);
3、獲得容器中的大小
1.
Alpha:
2.
int
count
= sp_array->count();
3.
beta:
4.
int
count
= sp_vec.size();
4、獲得容器中的精靈,並讓這些元素都做統一的動作
01.
Alpha:
02.
for
(
int
i=
0
;i<sp_array->count();i++)
03.
{
04.
auto
sp = (Sprite*)sp_array->getObjectAtIndex(i);
05.
sp->runAction(MoveTo::create(
0
.2f,Point(
100
,
100
)));
06.
}
07.
beta:
08.
for
(
int
i=
0
;i<sp_vec.size();i++)
09.
{
10.
auto
sp = sp_vec.at(i);
11.
sp->runAction(MoveTo::create(
0
.2f,Point(
100
,
100
)));
12.
}
5、刪除容器中的精靈
01.
//如果是要刪除容器中最後一個精靈的話:
02.
Alpha:
03.
sp_array->removeLastObject();
04.
beta:
05.
sp_vec.popBack();
06.
07.
//如果是直接刪除對象:
08.
Alpha:
09.
sp_array->removeObject(sp1);
10.
beta:
11.
sp_vec.eraseObject(sp1);
12.
//如果是要刪除容器中全部的對象:
13.
Alpha:
14.
sp_array->removeAllObject();
15.
beta:
16.
sp_vec.clear();
6、其他
”說破不值錢“,其實Vector也就那樣啦,恩,那樣...最後補充一些其他的用法:
01.
//a
在容器中的任何一個位置插入對象:
02.
sp_vec.pushBack(sp1);
03.
sp_vec.pushBack(sp2);
04.
//目前的情況是,sp1在容器的第一個位置,sp2在容器的第二個位置,這時候我們要將sp3放入第一個位置:
05.
sp_vec.insert(
0
,sp3);
//ok
06.
07.
//b
查找容器中的對象:
08.
//1、假設不知道容器中是否有sp3這個精靈,這時候可以這樣:
09.
sp_vec.contains(sp3);
//如果有,返回true,無返回false;
10.
//2、已知容器中有sp3這個精靈,想獲得它在容器中的位置:
11.
int
pos_int
= sp_vec.find(sp3);
12.
//上面的方法可以獲得sp3的位置,但返回的其實是迭代器的地址,你得到的結果可能是45214等等,如果想獲得正常需要的位置,可以這樣:
13.
int
pos_int
= sp_vec.find(sp3) - sp_vec.begin();
//ok
恩,時間不多,先寫到這吧。昨晚纔去瞭解beta裏的Vector,如果有什麼寫錯的地方或者用的不恰當的地方,敬請告知...
原創地址:http://blog.csdn.net/start530?viewmode=contents