【问题标题】:Cant we use simple class object as key in std::map?我们可以使用简单的类对象作为 std::map 中的键吗?
【发布时间】:2015-08-11 21:01:54
【问题描述】:
class abc
{
};

int main()
{
    std::map<abc, int> m;
    abc ob, ob1;
    m.insert(std::make_pair(ob, 1));
    m.insert(std::make_pair(ob1, 2));
}

即将出现的错误是: /usr/lib/gcc/i686-redhat-linux/4.7.2/../../../../include/c++/4.7.2/bits/stl_function.h:237:22:注意:' const abc' 不是从 'const std::multimap<_key _tp _compare _alloc>' 派生的

是否需要在类中添加任何加法函数才能使其可散列?

【问题讨论】:

    标签: stdmap


    【解决方案1】:

    知道了。由于std::map在map中输入新key时会进行排序,所以如果key是类对象,我们必须重载类的“

    class abc
    {
            public:
            bool operator< (const abc& userObj) const
            {
                    return true;
            }
    };
    
    int main()
    {
            std::map<abc, int> m;
            abc ob;
            abc ob1;
            m.insert(std::make_pair(ob, 1));
            m.insert(std::make_pair(ob1, 2));
    }
    

    【讨论】:

      猜你喜欢
      • 2017-07-29
      • 2021-10-23
      • 1970-01-01
      • 2010-12-23
      • 2010-11-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多