我正在使用此代码将一些元素插入到地图中。
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);
}
};
答案 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。