前段时间我已经注意到以下算法来对std :: map进行排序:
struct cmp_str {
// To facilitate TStringWrapper key in std::map
bool operator()(const TStringWrapper& a, const TStringWrapper& b) {
bool isLessThan = false;
if (a.length() < b.length()) {
isLessThan = true;
} else if (a.length() > b.length()) {
isLessThan = false;
} else {
isLessThan = memcmp(a.get(), b.get(), std::min(b.length(), b.length())) < 0;
}
return isLessThan;
}
};
std::map<TStringWrapper, TObj*, cmp_str> m_map;
所以想知道这可能有哪些副作用(非纯alpha排序除外)或者在std :: map中使用它是否完全安全(并且它应该比通过字符串值进行比较更有效。)