Effective STL學習筆記 條款23

2021-08-08 19:52:29 字數 1346 閱讀 4968

直接進入主題,為什麼會考慮使用vector代替關聯容器呢,可能有這樣的場景,一對關聯的資料,而時使用時要求資料查詢速度很快。

當然我們必須知道有序的vector的缺點就是他必須保持有序,乙個新item插入可能造成其他元素的移動。所以這種場景可能在幾乎不插入和刪除時考慮。

乙個例子:

using pair = pair;

using vecpair = vector

; //vector儲存了key=int,value=string

//我們對vector查詢 或者排序時 肯定要實現相應的仿函式、或者lambda方程式

class vecpaircompare

//查詢比較函式 type1

bool

operator()(const pair& lhs, const pair::first_type& key) const

//查詢比較函式 type2

bool

operator()(const pair::first_type& key, const pair& rhs) const

private:

bool

keyless(const pair::first_type& lhs,

const pair::first_type& rhs) const

};

使用如下:

vecpair vec;

//測試資料

vec.push_back(std::make_pair(3, "abc"));

vec.push_back(std::make_pair(1, "efg"));

vec.push_back(std::make_pair(2, "hij"));

//我們可以看到資料是正常放置

for (auto temppair : vec)

cout

<< endl;

//按照key的大小進行 排序

std::sort(vec.begin(), vec.end(), vecpaircompare());

for (auto temppair : vec)

//查詢

if (binary_search(vec.begin(), vec.end(), 1, vecpaircompare()))

列印結果:

個人認為pair是非常好用的,他表示資料之間的關聯性,套用vector保證資料的順序。

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學習筆記 條款30

看個例子 我們使用transform函式給乙個容器承載計算結果 vector src 待計算的資料 vector res 計算結果 src.push back 0 src.push back 1 src.push back 2 src.push back 3 std transform src.be...

Effective STL學習筆記 條款40

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