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