vector中函式的使用

2021-07-15 06:30:37 字數 3630 閱讀 5890

容器(container):可容納一些資料的模板類,stl中有vector、set、map、multimap和deque等容器。

游標(iterator):是乙個指標,用來指向stl容器中的元素。

#include
vector屬於std命名域的,使用全域性的命名域方式:

using

namespace

std;

vector

v;

等價於

std::vector

v;

vector

c;//建立乙個空的vector

vector

c1(c2);//建立乙個vector c1,並用c2初始化c1

vector

c(n);//建立乙個含有n個elemtype型別資料的vector

vector

c(n,elem);//建立乙個含有n個elemtype型別資料的vector,並全部初始化為elem

c.~vector

();//銷毀所有資料,釋放資源

下標值0

111452

13388

c.begin()是乙個指標,指向記憶體中的值為2,注意c.end()指向記憶體中的值不是88;

c.push_back(elem);//在容器最後位置新增乙個元素elem

c.pop_back();//刪除容器最後位置處的元素

c.at(index);//返回指定index位置處的元素

c.begin();//返回指向容器最開始位置資料的指標

c.end();//返回指向容器最後乙個資料單元的指標+1

c.front();//返回容器最開始單元資料的引用

c.max_size();//返回容器的最大容量

c.size();//返回當前容器中實際存放元素的個數,同c.capacity()

c.erase(p);//刪除指標p指向位置的資料,返回指向下乙個位置的指標

c.clear();//清除所有資料,capacity保持不變,size變成0

c.empty();//判斷容器是否為空,若為空返回true,否則返回false

c1.swap(c2);//交換兩個容器中的資料,兩個容器的size一定相等,capacity可以不等

c.insert(p,elem);//在指標p指向的位置插入資料elem,返回指向elem位置的指標

c.insert(p,n,elem);//在指標p指向的位置插入n個elem資料,無返回值

c.insert(p,begin,end); //在位置p插入在區間[begin,end)的資料,無返回值

c.rbegin();//將vector反轉後的開始指標返回(其實就是原來的end-1)

c.rend();//將vector反轉後的結束指標返回(其實就是原來的begin-1)

#include

#include

#include

using

namespace

std;

int main()

//----------------------------------/

system("pause");

return

0;}

reserve()可改變capacity,不改變size,可分配記憶體,不會構造出物件;如果改變後的capacity比當前capacity大,則capacity會變大,反之,capacity不變;

resize()可改變size,可能改變capacity。如果改變後的size比當前capacity大,則capacity會變大,同時構造出多出來的物件,反之,capacity不變,同時析構一些不再需要的物件;

reserve()和resize()都不會使capacity變小,但都有可能使capacity變大,reserve()能準確控制capacity,而resize()不能,vc裡是每次增大一半的當前capacity。如果不去使用reserve()和resize(),每當capacity不夠時,就會去分配一塊新的夠大的記憶體,再釋放以前的記憶體,因此效率很低。

c.[i];同at()函式的作用相同,即取容器中的資料;

資料的輸入與刪除

#include

#include

#include

using

namespace

std;

int main()

for (i = 0; i < v.size(); i++)

printf("\n");

v.pop_back();//pop_back()將陣列最後乙個元素刪除

for (i = 0; i < v.size(); i++)

printf("\n");

system("pause");

return

0;}

元素的訪問

#include

#include

#include

using

namespace

std;

int main()

for (i = 0; i < v.size(); i++)

printf("\n");

for (i = 0; i < v.size(); i++)

printf("\n");

for (it = v.begin(); it != v.end(); it++)

printf("\n");

system("pause");

return

0;}

排序和查詢

#include

#include

#include

#include

using

namespace

std;

int main()

it = find(v.begin(), v.end(), 3);//進行查詢元素3

if (v.end() == it)

else

sort(v.begin(), v.end());//公升序進行排序,開始位置到結束位置數值依次增大

reverse(v.begin(), v.end());//降序進行排序,開始位置到結束位置數值依次減小

system("pause");

return

0;}

二維容器

#include

#include

using

namespace

std;

int main()

for (i = 0; i < 4; i++)

}printf("%d\n", v.size());

for (i = 0; i < v.size(); i++)

printf("\n");

}system("pause");

return

0;}

向量vector 中主要函式的使用

一 vector用於實現陣列的功能,相當於在陣列的基礎上封裝了一些常用的功能。vector的主要函式 函式名稱 功能push back 在尾部新增乙個元素 pop back 在尾部刪除乙個元素 clear 清空所有元素 at按索引訪問某個位置的元素 front 返回頭元素 back 返回尾元素 si...

vector中的函式

vector 是同一種型別的物件的集合,每個物件都有乙個對應的整數索引值 2 和 string 物件一樣,標準庫將負責管理與儲存元素相關的記憶體。我們把 vector稱為容器,是因為它可以包含其他物件。乙個容器中的所有物件都必須是同一種型別的 2 vector 是乙個類模板 class templa...

vector建構函式的使用

vector容器提供了很多個建構函式,有的建構函式同時也提供了初始化或賦值功能,這很大程度上方便了我們構造vector物件,下面是我們常用的5種建構函式。1.vector 說明 無參建構函式,構造乙個vector物件,但未進行初始化,此時元素個數為0。2.vector size type num 說...