vector和map點擊鏈接即可
下文非鏈接
queue
說明:滿足所有有關隊列的操作
1、聲明:
queue<數據類型> 變量名
例:queue<int> q
2、操作:
入隊:q.push(data);
出隊:q.pop();
判空:q.empty();
大小:q.size()
隊首元素:q.front();
隊尾元素:q.back();
3、性質:
- 無法進行排序:因爲是隊列必須遵守原序
- 多用於廣搜BFS操作
4、樣例
priority_queue
1、說明:
- 介於queue無法滿足排序,所以引入了以堆爲數據結構支撐的優先隊——priority_queue
- 除排序功能外,以及對於priority_queue只有q.top(),與queue中的q.front()不同其餘與queue用法一致
- 默認以降序排,即大根堆
2、排序操作
改寫算子
- 升序排序:priority_queue<T,vector<T>,greater<T>>//其中greater稱爲算子,調用x>y比較方式
- 降序:直接默認,或者priority_queue<T,vector<T>,less<T>>
重載運算符(對於結構體):
- 結構體內:
struct student{
string name,age,gender;
bool operator () (const struct student a) const{
return a.age<age;
}
};
- 結構體外:
-
struct student{ string name,age,gender; }; bool operator < (const struct student a,const struct student b) { return a.age<b.age; }
set
1、說明:
- 集合運算
- 自帶升序排序
- 以紅黑樹作爲底層
- 多用於去重
2、操作:
set<數據類型> 變量名
例:set<int> s;
插入:s.insert();
大小:s.size();
刪除指定元素k:s.erase(s.find(k));
清空:s.clear();
判空:s.empty();