条款20:为指针的关联容器指定比较类型
考慮一下特殊情況:
set<string*> ssp; // ssp = “set of string ptrs”
ssp.insert(new string("Anteater"));
ssp.insert(new string("Wombat"));
ssp.insert(new string("Lemur"));
ssp.insert(new string("Penguin"));
我們希望set內的單詞是有序排列的,但是現在是無序的,因為按序輸出的是基于string 指針的序列。
現在考慮set<string*, less<string*> > ssp; 是set<string*>ssp 的簡寫。
如果你想要string*指針以字符串值確定順序被儲存在set中,你不能使用默認比較仿函數類less<string*>。你必
須改為寫你自己的比較仿函數類,它的對象帶有string*指針并按照指向的字符串值來進行排序。
如下:
struct DereferenceLess {
template <typename PtrType>
bool operator()(PtrType pT1, // 參數是值傳遞的,
PtrType pT2) const // 因為我們希望它們
{ // 是(或行為像)指針
return *pT1 < *pT2;
}
}
set<string*, DereferenceLess> ssp; // 行為就像
?
轉載于:https://www.cnblogs.com/xiuxiu55/p/7277443.html
總結
以上是生活随笔為你收集整理的条款20:为指针的关联容器指定比较类型的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 表空间检测异常的问题诊断
- 下一篇: Chrome Console Cooki