Effective STL學習筆記 條款30

2021-08-09 08:18:16 字數 727 閱讀 5898

看個例子:

我們使用transform函式給乙個容器承載計算結果:

vector

src; //待計算的資料

vector

res; //計算結果

src.push_back(0);

src.push_back(1);

src.push_back(2);

src.push_back(3);

std::transform(src.begin(), src.end(), res.begin(), (int value) );

for (auto value : res)

執行發現直接崩潰,原因就是容器res沒有足夠的空間承載這些資料。知道了原因,解決就很簡單了,我們resize一次空間即可:

res.resize(res.size() + src.size());

在這裡我們還可以使用另一種方法就是 inserter,例如back_inserter它會呼叫容器的push_back(vector、string、deque和list)方法增加值,或者front_inserter呼叫push_front(deque和list)。

std::transform(src.begin(), src.end(), back_inserter(res), (int value) );

這個使用起來很簡單,也很方便。

Effective STL學習筆記 條款20

在這裡我們強調的是指標,先個例子 set ssp ssp.insert new ssp.insert new string lemon ssp.insert new string banana ssp.insert new string pear for auto str ssp 按照我們正常的想法...

Effective STL學習筆記 條款23

直接進入主題,為什麼會考慮使用vector代替關聯容器呢,可能有這樣的場景,一對關聯的資料,而時使用時要求資料查詢速度很快。當然我們必須知道有序的vector的缺點就是他必須保持有序,乙個新item插入可能造成其他元素的移動。所以這種場景可能在幾乎不插入和刪除時考慮。乙個例子 using pair ...

Effective STL學習筆記 條款40

舉個例子,假設我有乙個widget 指標的list和乙個函式來決定這樣的指標是否確定乙個感興趣的widget class widget bool isinsteresting const widget pw 查詢第乙個感興趣的widget,這很容易 auto iter std find if wid...