條款一 仔細(xì)選擇你的容器
*vector<char>可以作為string的替代品
*vector list deque ,vector是一種可以默認(rèn)使用的序列類(lèi)型,當(dāng)很頻繁的對(duì)序列中進(jìn)行插入和刪除的時(shí)候應(yīng)該用list,大部分發(fā)生在尾部的話用deque這種數(shù)據(jù)結(jié)構(gòu)
*連續(xù)內(nèi)存容器和基于節(jié)點(diǎn)的容器的區(qū)別
連續(xù)容器vector/string/deque在一個(gè)或者多個(gè)內(nèi)存塊中保存它們的元素,如果新元素被插入或者已存元素被刪除,其他在同一個(gè)內(nèi)存塊中的元素必須向上或者向下移動(dòng)來(lái)為新元素提供空間或者填充原來(lái)被刪除的元素所占的空間,這種移動(dòng)影響了效率。
基于節(jié)點(diǎn)的list,插入或者刪除的時(shí)候不需要移動(dòng)
*序列容器在任意位置插入一個(gè)新元素,關(guān)聯(lián)容器不可以
*容器中的數(shù)據(jù)的內(nèi)存布局需要兼容C嗎,如果是,那只能用vector
*查找速度,散列容器》排序的vector>標(biāo)準(zhǔn)的關(guān)聯(lián)容器
*需要可靠的插入和刪除的能力,如果是需要使用基于節(jié)點(diǎn)的容器
*需要迭代器、指針、引用的實(shí)效次數(shù)減少到最小,如果是,使用介于節(jié)點(diǎn)的容器,一般來(lái)說(shuō),在連續(xù)容器上的插入和刪除會(huì)使所有指向容器的迭代器指針和引用實(shí)效