C ++ std :: map按长度排序字符串,然后按字母排序

时间:2017-06-11 08:33:24

标签: c++ stdmap

前段时间我已经注意到以下算法来对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中使用它是否完全安全(并且它应该比通过字符串值进行比较更有效。)

0 个答案:

没有答案