c++中vector的用法详解
生活随笔
收集整理的這篇文章主要介紹了
c++中vector的用法详解
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
c++中vector的用法詳解
? ? ?用法:
1.文件包含: ? ??
? ? ? ? ? ?首先在程序開頭處加上#include<vector>以包含所需要的類文件vector還有一定要加上using namespace std;
?
2.變量聲明:
? ? 2.1 例:聲明一個(gè)int向量以替代一維的數(shù)組:vector <int> a;(等于聲明了一個(gè)int數(shù)組a[],大小沒有指定,可以動(dòng)態(tài)的向里面添加刪除)。
? ? 2.2 例:用vector代替二維數(shù)組.其實(shí)只要聲明一個(gè)一維數(shù)組向量即可,而一個(gè)數(shù)組的名字其實(shí)代表的是它的首地址,所以只要聲明一個(gè)地址的向量即可,即:vector <int *> a.同理想用向量代替三維數(shù)組也是一樣,vector <int**>a;再往上面依此類推.
?
3.具體的用法以及函數(shù)調(diào)用:
? ? 3.1 如何得到向量中的元素?其用法和數(shù)組一樣:
? ? ? ? 例如:
? ? ? ? ? vector <int *> a
? ? ? ? ? int b = 5;
? ? ? ? ? a.push_back(b);//該函數(shù)下面有詳解
? ? ? ? ? cout<<a[0]; ? ? ? //輸出結(jié)果為5
1.push_back ? 在數(shù)組的最后添加一個(gè)數(shù)據(jù)
2.pop_back ? ?去掉數(shù)組的最后一個(gè)數(shù)據(jù)?
3.at ? ? ? ? ?得到編號(hào)位置的數(shù)據(jù)
4.begin ? ? ? 得到數(shù)組頭的指針
5.end ? ? ? ? 得到數(shù)組的最后一個(gè)單元+1的指針
6.front ? ? ?得到數(shù)組頭的引用
7.back ? ? ? ?得到數(shù)組的最后一個(gè)單元的引用
8.max_size ? ?得到vector最大可以是多大
9.capacity ? ?當(dāng)前vector分配的大小
10.size ? ? ? 當(dāng)前使用數(shù)據(jù)的大小
11.resize ? ? 改變當(dāng)前使用數(shù)據(jù)的大小,如果它比當(dāng)前使用的大,者填充默認(rèn)值
12.reserve ? ?改變當(dāng)前vecotr所分配空間的大小
13.erase ? ? ?刪除指針指向的數(shù)據(jù)項(xiàng)
14.clear ? ? ?清空當(dāng)前的vector
15.rbegin ? ? 將vector反轉(zhuǎn)后的開始指針返回(其實(shí)就是原來的end-1)
16.rend ? ? ? 將vector反轉(zhuǎn)構(gòu)的結(jié)束指針返回(其實(shí)就是原來的begin-1)
17.empty ? ? ?判斷vector是否為空
18.swap ? ? ? ? 與另一個(gè)vector交換數(shù)據(jù)
?
3.2 ?詳細(xì)的函數(shù)實(shí)現(xiàn)功能:其中vector<int> c.
? ? ? ? c.clear() ? ? ? ? ?移除容器中所有數(shù)據(jù)。
? ? ? ? c.empty() ? ? ? ? ?判斷容器是否為空。
? ? ? ? c.erase(pos) ? ? ? 刪除pos位置的數(shù)據(jù)
? ? ? ? c.erase(beg,end) ? 刪除[beg,end)區(qū)間的數(shù)據(jù)
? ? ? ? c.front() ? ? ? ? ?傳回第一個(gè)數(shù)據(jù)。
? ? ? ? c.insert(pos,elem) 在pos位置插入一個(gè)elem拷貝
? ? ? ? c.pop_back() ? ? ? 刪除最后一個(gè)數(shù)據(jù)。
? ? ? ? c.push_back(elem) ?在尾部加入一個(gè)數(shù)據(jù)。
? ? ? ? c.resize(num) ? ? ?重新設(shè)置該容器的大小
? ? ? ? c.size() ? ? ? ? ? 回容器中實(shí)際數(shù)據(jù)的個(gè)數(shù)。
? ? ? ? c.begin() ? ? ? ? ?返回指向容器第一個(gè)元素的迭代器
? ? ? ? c.end() ? ? ? ? ? ?返回指向容器最后一個(gè)元素的迭代器
? ? ? ? c.assign(beg,end):將[beg; end)區(qū)間中的數(shù)據(jù)賦值給c。
? ? ? ? c.assign(n,elem): 將n個(gè)elem的拷貝賦值給c。?
? ? ? ? c.at(idx): ? ? ? ?傳回索引idx所指的數(shù)據(jù),如果idx越界,拋出out_of_range。?
? ? ? ? c.back(): ? ? ? ? 傳回最后一個(gè)數(shù)據(jù),不檢查這個(gè)數(shù)據(jù)是否存在。
? ? ? ? c.front(): ? ? ? ?傳回地一個(gè)數(shù)據(jù)。?
? ? ? ? get_allocator: ? ?使用構(gòu)造函數(shù)返回一個(gè)拷貝。?
? ? ? ? c.rbegin(): ? 傳回一個(gè)逆向隊(duì)列的第一個(gè)數(shù)據(jù)。?
? ? ? ? c.rend(): ? ? ? ? 傳回一個(gè)逆向隊(duì)列的最后一個(gè)數(shù)據(jù)的下一個(gè)位置。?
? ? ? ? c.~ vector <Elem>():銷毀所有數(shù)據(jù),釋放內(nèi)存。?
總結(jié)
以上是生活随笔為你收集整理的c++中vector的用法详解的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Byte和bit的区别?
- 下一篇: 包含了主机名到ip地址的映射关系的文件是