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