資源描述:
《vector的用法》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、這篇文章的目的是為了介紹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)容,它是一個(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ù)。為了可以使用
2、vector,必須在你的頭文件中包含下面的代碼:#includevector屬于std命名域的,因此需要通過(guò)命名限定,如下完成你的代碼:usingstd::vector;vectorvInts;或者連在一起,使用全名:std::vectorvInts;建議使用全局的命名域方式:usingnamespacestd;在后面的操作中全局的命名域方式會(huì)造成一些問(wèn)題。vector容器提供了很多接口,在下面的表中列出vector的成員函數(shù)和操作。Vector成員函數(shù)函數(shù)表述c.assign(beg,end)、c.assign(n,elem),將[
3、beg;end)區(qū)間中的數(shù)據(jù)賦值給c。將n個(gè)elem的拷貝賦值給c。c.at(idx)傳回索引idx所指的數(shù)據(jù),如果idx越界,拋出out_of_range。c.back()傳回最后一個(gè)數(shù)據(jù),不檢查這個(gè)數(shù)據(jù)是否存在。c.begin()傳回迭代器重的可一個(gè)數(shù)據(jù)。c.capacity()返回容器中數(shù)據(jù)個(gè)數(shù)。c.clear()移除容器中所有數(shù)據(jù)。c.empty()判斷容器是否為空。c.end()指向迭代器中的最后一個(gè)數(shù)據(jù)地址。c.erase(pos)刪除pos位置的數(shù)據(jù),傳回下一個(gè)數(shù)據(jù)的位置。c.erase(beg,end)刪除[beg,end)區(qū)間的數(shù)據(jù),傳回下一個(gè)數(shù)據(jù)的位
4、置。c.front()傳回第一個(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()返回容器中最大數(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()傳回
5、一個(gè)逆向隊(duì)列的最后一個(gè)數(shù)據(jù)的下一個(gè)位置。c.resize(num)重新指定隊(duì)列的長(zhǎng)度。c.reserve()保留適當(dāng)?shù)娜萘?。c.size()返回容器中實(shí)際數(shù)據(jù)的個(gè)數(shù)。c1.swap(c2)swap(c1,c2)將c1和c2元素互換。同上操作。vectorc創(chuàng)建一個(gè)空的vector。vectorc1(c2)復(fù)制一個(gè)vector。vectorc(n)創(chuàng)建一個(gè)vector,含有n個(gè)數(shù)據(jù),數(shù)據(jù)均已缺省構(gòu)造產(chǎn)生。vectorc(n,elem)創(chuàng)建一個(gè)含有n個(gè)elem拷貝的vector。vectorc(beg,end)創(chuàng)建
6、一個(gè)以[beg;end)區(qū)間的vector。c.~vector()銷毀所有數(shù)據(jù),釋放內(nèi)存。Vector操作函數(shù)描述operator[]返回容器中指定位置的一個(gè)引用。創(chuàng)建一個(gè)vectorvector容器提供了多種創(chuàng)建方法,下面介紹幾種常用的。創(chuàng)建一個(gè)Widget類型的空的vector對(duì)象:vectorvWidgets;創(chuàng)建一個(gè)包含500個(gè)Widget類型數(shù)據(jù)的vector:vectorvWidgets(500);創(chuàng)建一個(gè)包含500個(gè)Widget類型數(shù)據(jù)的vector,并且都初始化為0:vectorvWidgets
7、(500,Widget(0));創(chuàng)建一個(gè)Widget的拷貝:vectorvWidgetsFromAnother(vWidgets);向vector添加一個(gè)數(shù)據(jù)vector添加數(shù)據(jù)的缺省方法是push_back()。push_back()函數(shù)表示將數(shù)據(jù)添加到vector的尾部,并按需要來(lái)分配內(nèi)存。例如:向vector中添加10個(gè)數(shù)據(jù),需要如下編寫代碼:for(inti=0;i<10;i++)vWidgets.push_back(Widget(i));獲取vector中制定位置的數(shù)據(jù)很多時(shí)候我們不必要知道vec