C++ C++;map和Compare类的问题
我希望有人能帮我解决问题。我有一个可爱的孩子 对“const pCompare”类型的对象的调用没有匹配函数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秒; 谢谢你的帮助
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。我确实忘记了地图的树状部分,我的坏。。。不管怎么说,参考文献是问题我确实忘记了地图的树的部分,我的坏。。。不管怎么说,引用是个问题