Map :: insert不起作用

时间:2014-08-15 01:53:13

标签: c++ stl

我正在使用此代码将一些元素插入到地图中。

raw.insert({ std::string(name), new raw_resource(data, length) });

第一个元素成功插入,但第二个元素不成功。 地图类型是

std::map<std::string, raw_resource*, compare> raw;

比较代码

class compare
{
public:
    bool operator()(std::string s1, std::string s2)
    {
        return (s1.compare(s2) == 0);
    }
};

1 个答案:

答案 0 :(得分:3)

参见参考资料:

template<
    class Key,
    class T,
    class Compare = std::less<Key>,
    class Allocator = std::allocator<std::pair<const Key, T> >
> class map;

http://en.cppreference.com/w/cpp/container/map

std::map取一个比较器,告诉第一个参数是否小于第二个参数。如果他们是平等的。否则它无法构建二叉树。

您根本不需要为std::string编写自己的比较器。已经为您定义了所有比较运算符:http://en.cppreference.com/w/cpp/string/basic_string/operator_cmp