stl一些容器

2021-09-26 20:56:20 字數 1499 閱讀 2890

deque a;

deque;

deque(n,elem)//n個elem初始化的deque

deque(beg,end)雙指標初始化

v.push_front()取出第乙個元素

棧,先進後出。通過top()方法返回棧頂元素,push()壓棧,pop()出棧。效率很高,不能遍歷,不支援隨機訪問。

q.front();q.back()隊頭,隊尾。頭相同,尾不同。其他操作大致與別的一樣。

鍊錶中的資料再記憶體中不是連續的。通過結點的指標來連線。

erase(pos):刪除pos處的元素,返回pos+1處的元素。

erase(po1,po2):刪除po1到po2(包含po1但不包含po2)的元素,返回po2處的元素。

remove(int n)移除鍊錶中所有的n元素。

insert(egw,elem)在egw位置插入元素elem,返回新資料的位置(難道不是egw嗎)

insert(egw,int wo,depw)在egw位置插入wo個depw元素,無返回值。

insert(egw,vbko,fsna)在egw位置插入指標vbko到fsna的位置,無返回值。

set< int >yge;

yge.find()乙個引數,在yge中查詢。若找到,返回那個值所在的位置;若沒有找到,返回yge.end

所以函式可以這麼寫:

set::iterater ret = set.find(4);

if(ret == set.end)

int ang;int id;

};set < gew > aa;

class mycompared();};

set< gew,mycompared>gn; gn容器按照gew類的物件中age大小(mycompared類中書寫)順序排列。

當容器中不是類時:

class mycompared2()

{bool operator(int a,int b){

return a>b;

//return a排序時如果時根據age進行排序,find()函式一定根據age進行查詢。比如

set< gew,mycompared>gn ;

gew kk1(100,200),kk2(200,300),kk3(100,300);

gn.insert(kk1);

gn.insert(kk2);

gn.insert(kk3);

此時如果查詢kk3,其實是查詢gn中跟kk3的age一樣的gew物件元素

set< gew >::iterator it = gn .find(kk3) ;

結果返回的迭代器可能指向為kk1,因為kk1和kk3的age是相等的。

一些stl相關

vector swap ivec 清記憶體,單純的clear或remove是不會把記憶體清掉的 ivec.reserve 100000 預設vector空間大小,避免因為vec分配得不夠,後期還需要重新分配空間 ivec.swap vector ivec or vector ivec swap iv...

關於STL中set容器的一些總結

1.關於set www.cppcns.comist等方便的容器,更重要的是stl封裝了許多複雜的資料結構演算法和大量常用資料結構操作。vector封裝陣列,list封裝了鍊錶,map和set封裝了二叉樹等,在封裝這些資料結構的時候,stl按照程式設計師的使用習慣,以成員函式方式提供的常用操作,如 插...

關於stl中關聯容器的一些基礎東西

最近發現自己日常工作中雖然用c 編碼,但是沒咋用stl的東西,所以就開始補充這方面的知識 1.宣告set容器裝的資料型別時可以順便定義比較函式方法。如 普通的宣告set容器裝型別的方式 setss 宣告set容器時還定義比較方法 ps 寫比較函式時注意相等比較要返回false 要寫成結構體物件方式,...