C++ C++;map和Compare类的问题

C++ C++;map和Compare类的问题,c++,pointers,map,C++,Pointers,Map,我希望有人能帮我解决问题。我有一个可爱的孩子 对“const pCompare”类型的对象的调用没有匹配函数 struct pCompare { 布尔运算符()(常量std::string和str1,常量std::string和str2)常量 { 返回str1.compare(str2)==0; } }; std::string*t=newstd::string(“/test.html”); 标准:map试验; 测试插入(标准:配对(t,“héhé”); std::cout秒; 谢谢你的帮助

我希望有人能帮我解决问题。我有一个可爱的孩子

对“const pCompare”类型的对象的调用没有匹配函数

struct pCompare
{
布尔运算符()(常量std::string和str1,常量std::string和str2)常量
{
返回str1.compare(str2)==0;
}
};
std::string*t=newstd::string(“/test.html”);
标准:map试验;
测试插入(标准:配对(t,“héhé”);
std::cout秒;

谢谢你的帮助

首先,不要这样做,因为这会弄乱映射:映射需要一个排序函数,而不是相等性测试

不管怎样,我想您的问题在于您的键类型std::string*,但您的函数测试string&。我还没有尝试过这个,但这应该可以做到:

bool operator()( std::string * str1, const std::string * str2 ) const
{
    return *str1 < *str2;
}
bool操作符()(std::string*str1,const std::string*str2)const
{
返回*str1<*str2;
}

首先,不要这样做,因为这会弄乱地图:地图需要一个排序函数,而不是相等性测试

不管怎样,我想您的问题在于您的键类型std::string*,但您的函数测试string&。我还没有尝试过这个,但这应该可以做到:

bool operator()( std::string * str1, const std::string * str2 ) const
{
    return *str1 < *str2;
}
bool操作符()(std::string*str1,const std::string*str2)const
{
返回*str1<*str2;
}

您的map有
(const)string*
作为键,但是您的比较器使用
const string&
…是否可以将您的实现更改为使用
std::map
。使用值而不是指针可以使事情变得更简单。还请注意,比较器应该测试排序是否不相等,否则您将进入UB land。您的地图将
(const)string*
作为键,而您的比较器将
const string&
…是否可以将您的实现更改为使用
std::map
。使用值而不是指针可以让事情变得更简单。还要注意的是,比较器应该测试排序是否相等,否则你会进入UB land。我确实忘记了地图的树状部分,我的坏。。。不管怎么说,参考文献是问题我确实忘记了地图的树的部分,我的坏。。。不管怎么说,引用是个问题