概述
- Container
- Stack矩动,Queue,Map和Set
- STL中的仿函數(shù)诈嘿,適配器
- 泛型算法之非變易算法
容器
Stack
- 一種先進后出的數(shù)據(jù)結(jié)構(gòu)
- 支持push,pop和top操作狰闪,只能訪問頂層元素,不允許遍歷
- 以deque作為默認的底層結(jié)構(gòu)
- (因為不支持遍歷)沒有iterator
Queue
- 先進先出的數(shù)據(jù)結(jié)構(gòu)
- 支持push濒生,pop,front幔欧,back操作罪治,不允許遍歷
- 以deque作為默認底層結(jié)構(gòu)
- (因為不支持遍歷)沒有iterator
Map
- 一種關(guān)聯(lián)容器,存儲對象是key/value pair
- 不允許有重復(fù)的key
- map存儲的對象必須能夠排序礁蔗,默認采用less(仿函數(shù))定義排序行為觉义,可以自定義排序函數(shù)
- 支持
- 插入元素:insert
- 刪除元素:erase
- 取元素:[]
Set
- 一種關(guān)聯(lián)容器,存儲對象本身是key又是value
- 不允許有重復(fù)的key
- 存儲的對象必須可以排序
- 默認用less排序浴井,可以定義排序行為
- 支持
- 插入:insert
- 刪除:erase
- 并:set_union
- 交:set_intersection
- 差:set_difference
- 通過iterator改變set的成員
- const_cast<Person&>(*it).SetName(L"Bill Gates")
- 其中Person是一set
STL的整體結(jié)構(gòu)
- 容器通過內(nèi)存分配器分配空間
- 容器和算法通過迭代器聯(lián)系
- 仿函數(shù)協(xié)助算法完成不同的策略
- 適配器套接仿函數(shù)
仿函數(shù)(Functor)
- 類重載()晒骇,作用相當于一個函數(shù)指針
- 可以用于模板實參,用于定義對象的行為
- binder1st/binder2nd
- 解決需要兩個參數(shù)的Functor用于泛型算法的問題磺浙,binder1st將一“常數(shù)”綁定到左操作數(shù)洪囤,作用相當于只接收一個參數(shù)的Functor
- binder2nd將“常數(shù)”綁定在第二個操作數(shù)上
- mem_fun
-
支持在算法中使用類的成員函數(shù),否則只能使用全局函數(shù)
-
- mem_fun_ref
- 某一容器中存放的是對象
-
遍歷容器的算法時撕氧,支持使用類的成員函數(shù)
注意
- 單線程下涉及對字符串的操作使用
- string和wstring
- 多線程下對字符串的操作使用
- vector<char>和vector<wchar_t>
- new出的對象放入容器時瘤缩,在銷毀容器前,delete那些對象
- 盡量用算法代替手寫循環(huán)
- 通過swap為容器“縮水”
- 在有對象繼承的情況下伦泥,建立指針的容器而不是對象的容器
非變易算法
- 一系列模板函數(shù)剥啤,在不改變操作對象的前提下對元素進行處理
- for_each
- find
- find_if
- adjacent_find
- find_first_of
- count
- count_if
- mismatch
- equal
- search