c 中常用的容器

2021-10-07 15:15:06 字數 3866 閱讀 9911

最近在學習資料結構和演算法,遇到了一些容器,對容器的使用還不太了解,所以想在學習的過程中,把自己使用到的容器的用法記錄下來。

乙個容器常常需要涉及到對容器中資料的增,刪,改,查操作,在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 語句在布林表示式為假時執行。巢狀 ...