我得到了一个多图
typedef std::multimap<std::string, size_t, StringLenCmp> wordDictType;
在一个类中,我需要设计一个将单词和单词长度插入多图的函数。 我知道传统上会插入多图,
mmap["one"] = 1;
或
mmap.insert(make_pair("one", 1));
但是我不知道StringLenCmp是什么。这是课程,
class StringLenCmp {
public:
StringLenCmp() = default;
// sort by length first, and then alphabetically
bool operator()(const std::string& a, const std::string& b) const {
return (a.size() < b.size()) || (a.size() == b.size() && a < b);
}
private:
// no data
};
但是问题是,我不知道这一切意味着什么。
有人可以帮我破译这一切吗?
答案 0 :(得分:1)
您可以阅读here,std::multimap
被定义为
template < class Key, // multimap::key_type
class T, // multimap::mapped_type
class Compare = less<Key>, // multimap::key_compare
class Alloc = allocator<pair<const Key,T> > // multimap::allocator_type
> class multimap;
默认情况下,参数class Compare
是根据键值以升序(less<Key>
)进行排序的部分,但是您可以定义对地图中的元素和{ {1}}就是这么做的。在插入期间会检查每个元素并对其进行排序。
答案 1 :(得分:1)
它是比较功能的函子,可以对多图进行“排序”。
或者只是一个包含运算符重载的类,这样它可以确定2个元素中的任何一个是相互之间是大还是小或相等。