16.將vector和string傳給遺留的API
*vector ,const char* c ,用 &vector[0]即可
*string ,string.c_str()
17.使用“交換技巧”來修正過剩容器
*vector<Contestant> vec(contestants).swap(contestants)
18.避免使用vector<bool>
兩個(gè)問題
*它不是一個(gè)STL容器,它并不容納bool
如果C是一個(gè)T類型的對(duì)象的容器,且C支持operator[],那么以下代碼必須能夠通過編譯
T* p= &c[0] //無論operator[]返回什么,都可以用這個(gè)地址初始化一個(gè)T*
但是vector<bool>中做了優(yōu)化,里面存放的是bit值
deque內(nèi)部內(nèi)存不是連續(xù)的,但里面存的是bool值
還有一個(gè)bitse可解決這個(gè)問題
19.了解相等和等價(jià)的區(qū)別
*相等的概念是基于operator== ,等價(jià)的概念基于operator<
20.為指針的關(guān)聯(lián)容器指定比較類型
關(guān)聯(lián)容器對(duì) 相同 的定義是等價(jià)
21.永遠(yuǎn)讓比較函數(shù)對(duì)相等的值返回false
22.避免原地修改set和multiset的鍵