STL 一些常用的STL函數(持續更新


先說一下  一邊要用到算法的東西一般要加#include<algorithm>頭文件

一、棧和隊列  

1 棧 :一種線性表  

    特點  后進先出

   頭文件  #include<stack>

   聲明  stack< 類型 > sk(變量);  注意  這里的類型  如果是char只能是單個字符 如果要存字符串要用string

  • sk.push();           向里存  寫在括號里
  • sk.pop();             出棧 把最上面的出棧(即所謂的先進后出  注意  這里的不能賦值給別的變量 括號里也不能寫東西
  • data = sk.top();   取出棧頂的元素賦值給一個變量 (不出棧
  • size = sk.size();  棧里元素的個數
  • sk.empty();         判定棧是否為空

      注意 要清空棧  沒有函數 要自己寫

2 隊列

   特點   先進先出  (類似於排隊買飯

  頭文件  #include<queue>

  聲明  queue< 類型 > q(變量);

  • q.push();             向里存  寫在括號里
  • q.pop();               出隊列 把隊首的出隊列(即所謂的先進先出  注意  這里的不能賦值給別的變量 括號里也不能寫東西
  • data = q.front();   獲得隊列首的元素賦值給一個變量 (不出隊列
  • q.back();              獲得隊尾的值 同q.front();
  • size = q.size();     隊列里元素的個數
  • q.empty();            判定隊列是否為空
  • q.clear();              清空隊列

3 雙端隊列

    特點  兩端都可以進出

   頭文件  #include<deque>

   聲明  deque< 類型 > dq(變量);

  • dq.push_front();           向雙端隊列首存  寫在括號里
  • dq.push_back();           向雙端隊列尾存  寫在括號里
  • dq.pop_front();             將雙端隊列的隊首元素出雙端隊列 
  • dq.pop_back();             將雙端隊列的隊尾元素出雙端隊列 
  • data = dq.front();          獲得雙端隊列首的元素賦值給一個變量 (不出雙端隊列
  • q.back();                       獲得雙端隊列尾的值 同q.front();
  • dq.empty();                  判定雙端隊列是否為空
  • dq.clear();                      清空雙端隊列

4 優先隊列(暫時不會。。

   特點 自動按升降序排序

    頭文件 #include<queue>

    priority_queue < 類型 > q;                                                      默認大小排序從大到小   

    priority_queue < 類型 ,vector <類型>, greater<類型> > q;   默認大小排序從小到大

    priority_queue < 類型 ,vector <類型>, less<類型> > q;        默認大小排序  從大到小

  • q.push();           向里存  寫在括號里
  • q.pop();             出隊列  隊首
  • data = q.top();   取出隊首的元素賦值給一個變量 (不出棧
  • size = q.size();  隊列里元素的個數
  • q.empty();         判定隊列是否為空

5 unique(     ,     )    去重       lower_bound()   upper_bound()

6 set  

    set <  類型 > q; 集合   自帶排序   迭代器  

     q.insert();  插入

     q.erase();  插入  

      q.lower_bound();

     迭代器   set  <  類型  >  :: iterator it;

     it = q.begain();

     for(it = q.begain() ; it ! = q.end() ; it++)

       *it

   兩個查詢

   it=q.find();  返回迭代器

    q.count();  返回0或1

  運算符重載

6 map 

     map< 類型,類型 > m;   相當於將離散的數連續的排列在一個數組中   map< , >::iterator it;   (*it).first;是鍵  (*it).second; 是值;

                鍵     值      

    查找  m.find();

             m.count();

     注意  if(m[6]!=0)  是可以的  但是  這樣寫如果沒有會往m里存  可能會將原來的數給壓下去

    map可以是好幾個鍵對應一個值  

 對於遍歷    正着遍歷(從小到大) for(it=m.begin();it!=m.end();it++)

                      反着遍歷(從大到小) for(it=m.rbegin();it!=m.rend();it++) 

    這里的it無論正反好像只支持++, - -的操作不支持+1,-1這樣的操作

7 pair   可以重   

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM