在這裡我們強調的是指標,先個例子:
set
ssp;
ssp.insert(new
ssp.insert(new
string("lemon"));
ssp.insert(new
string("banana"));
ssp.insert(new
string("pear"));
for (auto str : ssp)
按照我們正常的想法肯定時要輸出的是:按順序出現的水果,但是實際上呢列印的是這些位址!
列印實際位址對應的資料檢視:
可以看到是根據位址排序,而不是內容。
實際上乙個set
只是乙個簡寫,它的全稱是set< string*, less,allocator>
所以說,我們不能使用預設的仿函式less
此時應該自定義乙個新的仿函式,來實現這個效果。
書上使用的:binary_function
該仿函式已經被棄用。現在我們用新方式實現:
struct stringptrless
}; set
ssp;
//set < string*> ssp;
ssp.insert(new
ssp.insert(new
string("lemon"));
ssp.insert(new
string("banana"));
ssp.insert(new
string("pear"));
for (auto str : ssp)
//另一種輸出方式
copy(ssp.begin(), ssp.end(), ostream_iterator(cout, "\t"));
檢視列印:
可以看到是按照字母順序排序的。
Effective STL學習筆記 條款23
直接進入主題,為什麼會考慮使用vector代替關聯容器呢,可能有這樣的場景,一對關聯的資料,而時使用時要求資料查詢速度很快。當然我們必須知道有序的vector的缺點就是他必須保持有序,乙個新item插入可能造成其他元素的移動。所以這種場景可能在幾乎不插入和刪除時考慮。乙個例子 using pair ...
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...