1. 程式人生 > >資料結構stl

資料結構stl

 

排序sort

bool cmp(int x1, int x2)
{    
return x1 < x2;
}
sort(a,a + 100, cmp)

stack

#include <stack>
using namespace std;
stack <int> s;
s.top();   //取棧頂
s.push(x);   //入棧
s.pop();   //出棧
s.empty();   //是否為空
s.size();  //棧中元素個數

佇列 queue

#include <queue>
using namespace std;
queue <int> q;
q.front();   //取隊頭
q.push(x);   //入隊
q.pop();   //出隊
q.empty();   //是否為空
q.size();  //佇列中元素個數

 

向量 vector

#include <vector>
using namespace std;
vector<int> v;
v.push_back(x)   //尾部插入一個元素x
int x = v[i];   //取下表為i的元素
int Size = v.size()  //向量的長度
v.clear();   //清空向量

 

 

 

優先佇列priority_queue

類似於堆的特性

•#include <queue>
using namespace std;
priority_queue <int> q;
q.top();    //取隊首元素,預設是佇列中的最大值
其餘參考queue

 

集合 set&multiset

#include <set>
#include <multiset>
using namespace std;
set<int> s;
set<int>::iterator it;//集合迭代器,用於遍歷整個集合
s.begin()  (s.end())//返回指向第一個元素(最後一個)的迭代器;         
erase(x) //刪除集合中的元素x
erase(it)//刪除迭代器為it的元素
insert(x)//插入一個元素x
重複插入的元素只算一個,不能重複
multiset用法基本跟set一樣,只是multiset允許有重複值。

set,mulset裡面的元素預設從小到大排列

 

 

關聯集合map

•#include <map>
using namespace std;
map<A,B> mp;//定義一個鍵值對分別為A, B(A,B為資料型別)的關聯容器A是鍵,B是他的值
int x =mp[A];//得到鍵A的值
mp[A] =x;//將鍵A的值賦值為x

 

 

 基於map,set,priority_queue的刪除,插入操作複雜度為log(N).