最近在學習資料結構和演算法,遇到了一些容器,對容器的使用還不太了解,所以想在學習的過程中,把自己使用到的容器的用法記錄下來。
乙個容器常常需要涉及到對容器中資料的增,刪,改,查操作,在vector中涉及到的函式有:
(1)增
push_back()函式:對vector的隊尾新增乙個元素
vectordata;
// 在隊尾新增整型元素3
data.push_back(3);
insert()函式:在vector的某個位置新增乙個元素
vectordata;
// 在第三個元素新增元素3 (資料新增的位置不能超過vector的索引範圍)
// 情況1:這時候data的容量只有1,如果在第二個位置新增元素,將不會成功
data.insert(data.begin()+2,3);
// 情況2:需要給vector分配記憶體,初始化資料
vectordata;
for(int i =0; i<3;i++)
data.push_back(i);
data.insert(data.begin()+2,3);
// 輸出結果
// 0 1 3 2
(2)刪
pop_back()函式:刪除最後乙個元素
vectordata;
for(int i =0; i<3;i++)
data.push_back(i);
// 0 1 3 2
data.insert(data.begin()+2,3);
// 刪除最後乙個資料
// 0 1 3
data.pop_back();
erase()函式:刪除某個元素,或者刪除某個區間的元素
vectordata;
for(int i =0; i<3;i++)
data.push_back(i);
// 0 1 3 2
data.insert(data.begin()+2,3);
// 情況1:刪除某個元素,需要使用指標獲取要刪除資料的位置
// 1 3 2
data.erase(data.begin());
// 情況2:刪除某個區間的元素:[) 前閉後開
// 3 2
data.erase(data.begin(),data.begin()+2);
(3)改
assign(n,value)函式:重新給vector分配能夠儲存n的元素,初始值為value的記憶體空間
vectordata;
for(int i =0; i<3;i++)
data.push_back(i);
// 0 1 3 2
data.insert(data.begin()+2,3);
// 重新分配vector的記憶體大小和資料
// 注意:分配之後的記憶體一定大於等於之前的
// 2 2 2 2 2 2
data.assign(6,2);
(4)查
data[i]:直接索引vector第i個元素
vectordata;
for(int i =0; i<3;i++)
data.push_back(i);
// 0 1 3 2
data.insert(data.begin()+2,3);
// 索引首個元素
// 0
cout << data[0] << endl;
begin()和end()函式:返回vector的最開始和最結尾的指標
// 使用begin()和end()可以列印vector的所有資料
void showvector(vectordata){
// 使用迭代器列印資料
vector::iterator it;
for (it = data.begin(); it != data.end(); it++)
cout << *it <front()和back()函式:得到vector首個和最後乙個資料
vectordata;
for(int i =0; i<3;i++)
data.push_back(i);
data.insert(data.begin()+2,3);
// 獲得首個元素
cout<resize()函式:給vector重新分配記憶體大小
vectordata;
for(int i =0; i<3;i++)
data.push_back(i);
data.insert(data.begin()+2,3);
// 給vector重新分配記憶體,如果分配之後的比之前的大,多餘的部分設定為0
// 0 1 3 2 0 0 0 0 0 0
data.resize(10);
如果乙個類的成員變數是vector,在初始化的時候需要給vector分配記憶體大小,分配記憶體大小的過程應該放在建構函式中進行。
size()和capacity()函式:前者獲得vector當前容納元素的個數,後者獲得vector所能容納的數量
vectordata(10);
for(int i =0; i<3;i++)
data.push_back(i);
// 3
cout << "size = "<
queue是乙個先進先出的佇列,就像我們吃飯排隊一下,先到先得。
(1)增
push()函式:向佇列中新增乙個資料
queueq;
// 新增資料
q.push(1);
q.push(2);
(2)刪
pop()函式:刪除首個佇列中首個元素
// 彈出首個元素
q.pop();
// 1
// front()函式可以獲得首個元素
cout << q.fron()<(3)查
front()和back()函式:得到佇列首個元素和末尾的元素
queueq;
// 增加資料
q.push(1);
q.push(2);
q.push(3);
q.pop();
// 2
cout << q.front()<< endl;
// 3
cout <empty():判斷queue是否為空
cout << "q is empty = " << q.empty() <size():得到queue中元素的個數
cout << " the size of q is = " <
C中常用的巨集
define 定義乙個預處理巨集 undef 取消巨集的定義 include 包含檔案命令 if 編譯預處理中的條件命令,相當於c語法中的if語句 ifdef 判斷某個巨集是否被定義,若已定義,執行隨後的語句 ifndef 與 ifdef相反,判斷某個巨集是否未被定義 elif 若 if,ifdef...
C 中常用的操作
1 enable usb phy and use remote wake up define drvusb enable usb outp32 usbd attr 0x7d0 define outp32 port,value volatile unsigned int port value 這個巨集...
C 中常用結構
判斷語句結構要求程式設計師指定乙個或多個要評估或測試的條件,以及條件為真是要執行的語句和條件為假時要執行的語句.語句 描述 if 語句 乙個 if語句由乙個布林表示式後跟乙個或多個語句組成。if.else 語句 乙個if語句後可跟乙個可選的 else語句,else 語句在布林表示式為假時執行。巢狀 ...