首先查詢給定值第乙個位置,然後遍歷後面的元素,將非移除元素拷貝到前面,覆蓋前面的元素。
#include #include #include #include using namespace std;
void print_element(int n)
int main(void) ;
vectorv(a, a+6);
listl(15);
for_each(v.begin(), v.end(), print_element);
cout << endl;
/*remove(v.begin(), v.end(), 3);
for_each(v.begin(), v.end(), print_element);
cout << endl;*/
v.erase(remove(v.begin(), v.end(), 3), v.end());
for_each(v.begin(), v.end(), print_element);
cout << endl;
return 0;
}
執行結果:
#include #include #include #include using namespace std;
void print_element(int n)
int main(void) ;
vectorv(a, a+6);
listl(15);
for_each(v.begin(), v.end(), print_element);
cout << endl;
rotate(v.begin(), v.begin()+2, v.end()-1);
for_each(v.begin(), v.end(), print_element);
cout << endl;
return 0;}/*
* listl
* l.end()-1
* 鍊錶不支援隨機訪問+,-,+=,-=:error
* ++,--:ok*/
執行結果:
lower_bound:(應用於有序區間)搜尋第乙個「大於等於給定值」的元素,如果要插入給定值保持區間有序性,返回第乙個可插入位置
upped_bound:(應用於有序區間)搜尋第乙個「大於給定值」的元素,如果要插入給定值,保持區間有序性,返回最後乙個可插入的位置
#include #include #include #include using namespace std;
void print_element(int n)
int main(void) ;
vectorv(a, a+6);
listl(15);
for_each(v.begin(), v.end(), print_element);
cout << endl;
auto it = lower_bound(v.begin(), v.end(), 10);
if(v.end() != it)
it = upper_bound(v.begin(), v.end(), 10);
if(v.end() != it)
v.insert(it,55);
for_each(v.begin(), v.end(), print_element);
cout << endl;
return 0;
}
執行結果:
//累加
cout << accumulate(v.begin(), v.end(), 0) <
STL示例05 泛型演算法
stl示例 泛型演算法find if include include include include include using namespace std define vsize 24 vectorv vsize void initialize long ri void show const l...
STL 演算法細節
一 概論 1 質變演算法 會改變操作物件的值 2 非質變演算法 不改變操作物件的值 3 所有泛型演算法的前兩個引數都是一對迭代器 二 演算法的泛化過程 1 將乙個敘述完整的演算法轉化為程式 是任何訓練有素的程式設計師勝任愉快的工作。2 泛化是乙個漸進過程,從具體到抽象的過程。3 迭代器是乙個行為類似...
STL演算法概述
除了容器類和迭代器,stl還提供了一些通用的演算法與容器類的元素工作。這些讓你做的事情,如搜尋,排序,插入,重新排序,刪除,複製元素的容器類。請注意,作為全球性的功能,操作使用迭代器演算法的實現。這意味著,每個演算法只需要實現一次,它一般會自動工作,提供了一組迭代器 包括自定義的容器類 的所有容器。...