STL資料結構

2021-08-23 12:18:51 字數 1912 閱讀 7836

#include

pritorityq;(大根堆)

priority_queue,greater>q;(小根堆)

structno

// v值xiao的優先

};

queueq;

#include

vectorvec;

vec.push_back();(加入,從0開始)

vec.size() 

vec.pop_back()  (刪除末尾)

vec.clear();

使用迭代器訪問元素.

vector::iterator it;

for(it=vec.begin();it!=vec.end();it++)

cout<<*it《插入元素:    vec.insert(vec.begin()+i,a);在第i+1個元素前面插入a;

刪除元素:    vec.erase(vec.begin()+2);刪除第3個元素

vec.erase(vec.begin()+i,vec.end()+j);刪除區間[i,j-1];區間從0開始

排序 sort(vec.begin(),vec.end(),cmp)

元素翻轉 reverse(vec.begin(),vec.end());

#include

map直接用

#include

bitset<100> s;

相當於flag[100]

也可以當做100位的二進位制數

效率o(n/32)

include

sets//去重

multisets//不去重

s.begin()第乙個

s.end()最後乙個的下一位(沒有東西)

s.clear()

s.empty() ,判斷set容器是否為空

s.count(x);x出現次數

erase(iterator)  ,刪除定位器iterator指向的值

erase(key_value),刪除鍵值key_value的值

lower_bound(key_value),返回第乙個大於等於key_value的定位器

upper_bound(key_value),返回第乙個大於key_value的定位器

插入 s.inset(x);

迭代器 set::iterator pos;

遍歷 for(pos=s.begin();pos!=s.end();pos++)

#include#include#include#include#include#include#includeusing namespace std;

int main(){

sets;

s.clear();

s.insert(1);s.insert(2);s.insert(3);

set::iterator it;

it=s.begin();

cout<<*it<<' '<<*s.begin()<::iterator t1,t2;

t1=s.lower_bound(1);t2=s.upper_bound(1);

cout<<*t1<<' '<<*t2<::iterator t3;

t3=s.upper_bound(2);

cout<<"? "<<*t3<6.next_permutation(a+1,a+n+1)

7.nth_element(first,kth,last,cmp)

nth_element(now+1,now+m+1,now+n+1,greater());

注意前m個是無序的,但保證是前m大

資料結構 STL

棧 先入後出 filo 的一種資料結構。常見操作 模擬火車調頭,進製轉換,表示式求值,單調棧 陣列形式 理解 const int num 1e6 10 定義棧的大小,可自由改變 int stac num 乙個整型棧 int top 棧頂指標 int main top 1 設定棧頂指標為 1 stac...

資料結構 stl

uva 11997 題意 給你乙個數k,並且給你k組數,每組k個數,現在在每組中任取乙個數,然後相加可以得到乙個和,這樣的和共有k k個,要求輸出所有可能的和值中最小的k個。思路 問題1 如果只有a,b,c三個大小為k的陣列,我們如何求 和 能獲得最小的前k個和呢?我們只需要將a和b陣列求出前k小的...

資料結構 stl

1022 心中mmp,很簡單的一道題目,做了兩個小時,改錯乙個半小時,最後錯出在了while的判斷條件上,有什麼區別麼。題意 給出該數字序列的進棧順序,並給出要求的出棧順序,要你判斷是否能按照這個順序出棧。思路 我們只要用兩個指標i和j,指向當前需要處理的入棧和出棧的那個字元即可。先看如果我們把棧s...