一些stl 小技巧

2021-08-30 15:53:24 字數 1501 閱讀 8922

大部分都是網上總結的(滑稽)

1.一些非常實用的函式,比如說找到下乙個排列的

2.在3.vector代替queue和stack還能稍微快一些。所以不建議使用queue和stack,內建的棧和佇列出奇的慢。

4.優先佇列,維護數列的極大值,效率很慢,比手寫二叉堆還慢不少,好像set都比它快些使用的話,主要是dijkstra的優化,用優先佇列可以簡化**(但效率賊慢)。

5.nth_element(first,nth,last) 將第k大的元素放到它該放(第k個)的位置上,左邊元素都小於它,右邊元素都大於它.

first,last 第乙個和最後乙個迭代器,也可以直接用陣列的位置。 

nth,要定位的第nn 個元素,能對它進行隨機訪問.

6. vector:

1 .vector開闢空間是動態的,即宣告時vectorm[1e8] 都行,最後實際大小是你push_back的大小,用多少開闢多少

2.vector存資料時必須push_back();但當你存完了,用它裡面的東西時,直接可以用下標找,比如 輸出時

for(int i=0;i當然最硬核的就是用迭代器了

vector::iterator it;

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

cout<

(1)標頭檔案#include.

(2)建立vector物件,vectorvec;

(3)尾部插入數字:vec.push_back(a);

(4)使用下標訪問元素,cout

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

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

(7)向量大小:vec.size();

用法: max=*(--s.end());

(8)清空:vec.clear();

7.  set集合

1).set.begin() 返回集合的首迭代器,即指向集合中最小元素的迭代器,時間複雜度為o(1)

map::iterator it=s.begin();

min=*it

也可以

min=*(s.begin)

2).set.end()

返回集合的尾迭代器,眾所周知,stl中區間都是左閉右開的,那麼end()函式返回的迭代器即為指向集合中最大元素的下一    個位置的迭代器,因此--s.end()才是指向集合中最大元素的迭代器,時間複雜度為o(1)

用法:  max=*(--s.end());
8 二維map存結構體

9.  pairp  一對類似結構體

make_pair(int,int);  構造乙個pair 物件

pair的sort   預設是按first公升序 ,first相當是按second公升序

未完待續..

一些 ssh 小技巧

ssh 經常需要使用的,每次使用都 ssh abc def.com p 12138 i ssh id rsa來一遍顯然太麻煩了,下面分享一點使用ssh的小技巧 linux 下,ssh會去讀 ssh config 裡的配置的,只需要配置檔案裡寫入如下配 host 1 配置的名稱,選方便自己識別的就行h...

一些 ssh 小技巧

ssh 經常需要使用的,每次使用都 ssh abc def.com p 12138 i ssh id rsa複製 來一遍顯然太麻煩了,下面分享一點使用ssh的小技巧 linux 下,ssh會去讀 ssh config 裡的配置的,只需要配置檔案裡寫入如下配 host 1 配置的名稱,選方便自己識別的...

一些殺病毒小技巧

中了類似這種得sal.xls.exe和autorun.inf等 winrar可以作為資源管理器用 就是開啟winrar開啟也能用來檢視資料夾,而且能看到所有隱藏檔案 當顯示所有檔案失效而找不到病毒檔案時,可以用winrar看磁碟下的病毒檔案。嗯 u盤病毒 若是後遺症 雙擊磁碟會新建視窗開啟,資料夾選...