STL函式中的小細節(不定期更新)

2021-10-03 19:51:48 字數 1188 閱讀 8358

隨便記記了。(不定期更新)

reverse函式反轉的範圍是[first,last),所以包括first指向的元素,不包括last指向的元素。

而a.end()(a為string)指向a最後乙個字元的後一位。

全排列:next_permutation()函式功能是輸出所有比當前排列大的排列,順序是從小到大。

而prev_permutation()函式功能是輸出所有比當前排列小的排列,順序是從大到小。

unique的作用就是"去除"陣列中重複的元素,unique去重的過程是把不重複的元素移到前面來,所以去重後陣列會變。

而lower_bound( )和upper_bound( )都是利用二分查詢的方法在乙個排好序(前提)的陣列中進行查詢的。所以陣列不會變。

它們都是返回位址(迭代器),所以都要減去首位址。

max_element() 和 min_element():

1、第三個引數cmp可寫可不寫, max_element()和 min_element() 預設是從小到大排列,然後 max_element() 輸出最後乙個值, min_element() 輸出第乙個值,但是如果自定義的 cmp函式寫的是從大到小排列,那麼會導致 max_element() 和min_element() 的兩個結果是對調的。

2、可以用於結構體,string,vector等等,注意cmp從小到大排列。

3、不會改變原陣列。

4、範圍同樣是[first,last),不包括last指向的元素。

accumulate的3種用法:

1、累加求和:

int sum=

accumulate

(a.begin()

,a.end()

,0);

第三項為初值。

2、累項相乘:加第四項multiplies()

3、自定義資料型別的處理

struct node

;node a[5]

;int sum=

accumulate

(a,a+5,

0,(int x,node t)

);

面向新手:

switch中case與default

運算子&與&&,|與||的區別

memset 初始化問題(至於fill函式和遍歷賦值沒什麼區別)

STL裡面的函式(不定期更新)

這兩個函式類似,以upper bound為例,該函式有兩種形式 template forwarditerator upper bound forwarditerator first,forwarditerator last,const t val template forwarditerator u...

程式設計細節總結(不定期更新)

最近總是犯一些奇奇怪怪的小錯誤,忍無可忍,總結如下 不定期更新,看我的犯錯頻率了qwq 1.線段樹初始化盡量將所有引數初始化好 留下個add沒初始化,出了問題半天查不出來 2.樹剖中,兩點往上跳時交換兩點順序的條件不是基於兩點本身深度的比較,而是基於兩點所在鏈頂點深度的比較 調了三個晚上,看了以前的...

尤拉函式相關(不定期更新)

prime independence lightoj 1356 分析 尤拉線性篩模板,注意此題不需要二分查詢,對於輸入的x,可以從x 1開始找phi x的第乙個數,貌似不會t include using namespace std typedef long long ll typedef int12...