插入多图c ++

时间:2018-11-30 21:15:03

标签: c++ class dictionary tree multimap

我得到了一个多图

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
};

但是问题是,我不知道这一切意味着什么。

有人可以帮我破译这一切吗?

2 个答案:

答案 0 :(得分:1)

您可以阅读herestd::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个元素中的任何一个是相互之间是大还是小或相等。