第10章 泛型算法
1. find()泛型算法使用示例:
2. 只讀算法accumulate:對所給範圍的元素求和並返回. 注意accumulate的第3個參數決定着它的返回類型. 即如果第3個參數是double,就算迭代器裏都是int,最終還是返回double類型的數.
3. 只讀算法equal:比較前兩個迭代器表示範圍的所有元素是否與第3個迭代器表示的對應位置的元素都相同,如果相同返回true。兩個容器類型可以不同,保存的元素類型也可以不同,只要元素之間可以比較即可.如string類型和const char*類型之間的比較.
4. 寫容器算法fill:將指定值賦予容器中的元素. 容器不能爲空.
5. 使用back_inserter(一種插入迭代器)的示例:
6. 拷貝算法copy 和 replace. 只有replace_copy不換改變原迭代器所指的容器內的元素值.
7. 排序去重算法sort和unique.
注意:unique並不真正刪除容器重複元素,它只不過是把重複元素用不重複元素的值覆蓋,容器後面的空間依然有效,不過值是多少就不一定了.
8. 穩定排序stable_sort 與 定製操作:
9. lambda與find_if的用法:
10. for_earch算法:對迭代器範圍內的每個元素調用一元謂詞:
11. lambda的特性:
12. bind函數:P354
13. 插入迭代器back_inserter, front_inserter, inserter:
對插入迭代器it執行*it ,++it, it++,it--,--it操作沒有任何作用.
假設auto it=inserter(vc,vc.begin()+1); 生成了一個插入迭代器,那麼通過it=20插入元素的話,永遠只插在vc.begin()+1的前面:
使用inserter:
使用back_inserter:
使用front_inserter:
14. 反向迭代器 P363
反向迭代器可以用過rbegin()和rend()方法獲得,其++,--與普通迭代器的操作含義不同,需要注意. 可以用base()方法將一個反向迭代器轉爲普通迭代器.