我可以为这样的地图定义一个比较类:
struct classcomp {
bool operator() (const string& lhs, const string& rhs) const
{
if(lhs < rhs)
return true;
else
return false;
}
};
但是这里lhs
和rhs
代表键。如果我想按值而不是键比较怎么办?我该怎么办?
与您的需求无关;是关于std::map
想要的。排序基于内存中元素的布局(通常为树形结构),并且此过程使用比较器。希望事实并非如此!
在我看来,std::map
因为容器选择不符合您的要求。请查阅容器选择流程图,以决定下一步要做什么。
std :: map类型不支持按值比较。如果要按值比较,则应考虑制作一个新的多图,其键代表旧地图中的值,而值代表旧地图中的键。
就是说,听起来您正在尝试根据键的值动态地对键进行重新排序。在这种情况下,您可能需要查看支持减少键的优先级队列,因为这可能与您要执行的操作更加一致。
希望这会有所帮助!