資源描述:
《c stl vector 容器介紹》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、C++STLvector容器介紹介紹std::vector,并且討論它在STL中的算法和條件函數(shù)remove_if()。介紹????????這篇文章的目的是為了介紹std::vector,如何恰當(dāng)?shù)厥褂盟鼈兊某蓡T函數(shù)等操作。本文中還討論了條件函數(shù)和函數(shù)指針在迭代算法中使用,如在remove_if()和for_each()中的使用。通過(guò)閱讀這篇文章讀者應(yīng)該能夠有效地使用vector容器,而且應(yīng)該不會(huì)再去使用C類型的動(dòng)態(tài)數(shù)組了。Vector總覽??????????vector是C++標(biāo)準(zhǔn)模板庫(kù)中的部分內(nèi)容,
2、它是一個(gè)多功能的,能夠操作多種數(shù)據(jù)結(jié)構(gòu)和算法的模板類和函數(shù)庫(kù)。vector之所以被認(rèn)為是一個(gè)容器,是因?yàn)樗軌蛳袢萜饕粯哟娣鸥鞣N類型的對(duì)象,簡(jiǎn)單地說(shuō),vector是一個(gè)能夠存放任意類型的動(dòng)態(tài)數(shù)組,能夠增加和壓縮數(shù)據(jù)。為了可以使用vector,必須在你的頭文件中包含下面的代碼:#includevector屬于std命名域的,因此需要通過(guò)命名限定,如下完成你的代碼:usingstd::vector;vectorvInts;或者連在一起,使用全名:std::vectorvI
3、nts;??建議使用全局的命名域方式:usingnamespacestd;??在后面的操作中全局的命名域方式會(huì)造成一些問(wèn)題。vector容器提供了很多接口,在下面的表中列出vector的成員函數(shù)和操作。(eg:vectorc;)vector的成員函數(shù)c.assign(beg,end)?? 將[beg;end)區(qū)間中的數(shù)據(jù)賦值給c。c.assign(n,elem)????????????將n個(gè)elem的拷貝賦值給c。c.at(idx)????????????????????????????傳回
4、索引idx所指的數(shù)據(jù),如果idx越界,拋出out_of_range。c.back()????????????????????????????傳回最后一個(gè)數(shù)據(jù),不檢查這個(gè)數(shù)據(jù)是否存在。c.begin()??????????????????????????指向迭代器中的第一個(gè)數(shù)據(jù)。(vector::iteratoritor;itor=c.begin();)c.capacity()??????????????????????返回容器中數(shù)據(jù)個(gè)數(shù)。c.clear()???????????????????
5、?????????移除容器中所有數(shù)據(jù)。c.empty()??????????????????????????判斷容器是否為空。c.end()??????????????????????????????指向迭代器中的最后一個(gè)數(shù)據(jù)的下一個(gè)位置。c.erase(pos)????????????????????刪除pos位置的數(shù)據(jù),傳回下一個(gè)數(shù)據(jù)的位置。(pos是游標(biāo)iterator)c.erase(beg,end)????????????刪除[beg,end)區(qū)間的數(shù)據(jù),傳回下一個(gè)數(shù)據(jù)的位置。c.front(
6、)????????????????????????????傳回第一個(gè)數(shù)據(jù)。get_allocator??????????????????使用構(gòu)造函數(shù)返回一個(gè)拷貝。c.insert(pos,elem)??????????在pos位置插入一個(gè)elem拷貝,傳回新數(shù)據(jù)位置。c.insert(pos,n,elem)??????在pos位置插入n個(gè)elem數(shù)據(jù)。無(wú)返回值。c.insert(pos,beg,end)????在pos位置插入在[beg,end)區(qū)間的數(shù)據(jù)。無(wú)返回值。c.max_size()??????
7、????????????返回容器中最大數(shù)據(jù)的數(shù)量。c.pop_back()????????????????刪除最后一個(gè)數(shù)據(jù)。(與棧相反)c.push_back(elem)??????在尾部加入一個(gè)數(shù)據(jù)。(與棧相反)c.rbegin()??????????????????????傳回一個(gè)逆向隊(duì)列的第一個(gè)數(shù)據(jù)。c.rend()??????????????????????????傳回一個(gè)逆向隊(duì)列的最后一個(gè)數(shù)據(jù)的下一個(gè)位置。c.resize(num)????????????????重新指定隊(duì)列的長(zhǎng)度。c.res
8、erve()????????????????????保留適當(dāng)?shù)娜萘?。c.size()??????????????????????????返回容器中實(shí)際數(shù)據(jù)的個(gè)數(shù)。c1.swap(c2)??????????????????將c1和c2元素互換。swap(c1,c2)??????????????????同上操作。vectorc????????????創(chuàng)建一個(gè)空的vector,所儲(chǔ)存的數(shù)據(jù)類型為Elemvectorc1(c