總結幾個STL

2021-08-25 22:42:43 字數 1029 閱讀 8654

總是記不住的幾個

1.unique()函式去重  

該函式的作用是「去除」容器或者陣列中相鄰元素的重複出現的元素

(1) 這裡的去除並非真正意義的erase,而是將重複的元素放到容器的末尾,返回值是去重之後的尾位址。 

(2) unique針對的是相鄰元素,所以對於順序順序錯亂的陣列成員,或者容器成員,需要先進行排序,可以呼叫sort()函式

例如   1 1 2 3 4 5 5 6         去重後為1 2 3 4 5 6 1 5

int a[10];

int n = 5;

int size = unique(a,a+n)-a;

2. lower_bound() 

返回乙個非遞減序列[first, last)中的第乙個大於等於值val的位置,如果所有元素都小於val,則返回last的位置

int a[10],val;

int pos = lower_bound(a,a+n,val) - a;

例如  5,10,23,45,108

若 val = 2,pos = 0            若 val = 9,pos = 1

若 val = 23,pos = 2          若 val = 110,pos = 5(越界)

3.upper_bound() 

返回乙個非遞減序列[first, last)中第乙個大於val的位置,如果所有元素都小於val,則返回last的位置

int a[10],val;

int pos = upper_bound(a,a+n,val) - a;

例如  5,10,23,45,108

若 val = 2,pos = 0            若 val = 9,pos = 1

若 val = 23,pos = 3         若 val = 110,pos = 5(越界)

STL幾個容器的比較

vector 連續記憶體,隨機訪問資料成員快,但是頻繁的插入 需要移動要插入的元素的後面的所有元素 或者擴容 vector擴容後會清掉原來的資料,拷貝到新的申請的大的記憶體中去,特別是有比較複雜的類的時候會呼叫構造和析構函式極大影響效能 的操作會影響效能。vector的另乙個常見的問題就是clear...

STL容器總結

一.種類 值得注意的是,陣列可以和 stl演算法配合,因為指標可以當作陣列的迭代器使用。二.刪除元素 如果想刪除東西,記住 remove 演算法後,要加上 erase 所謂刪除演算法,最終還是要呼叫成員函式去刪除某個元素,但是因為 remove 並不知道它現在作用於哪個容器,所以 remove 演算...

STL用法總結

在c std map上面用迭代器移除元素 序列性容器 vector erase 迭代器不僅使所有指向被刪元素的迭代器失效,而且使被 刪元素之後的所有迭代器失效,所以不能使用 erase iter 的方 式,但是 erase 的返回值為下乙個有效的迭代器,所以 正確方法為 for iter c.beg...