为std :: map定义一个比较函数,该函数使用值而不是键

问题描述 投票:3回答:2

我可以为这样的地图定义一个比较类:

struct classcomp {
    bool operator() (const string& lhs, const string& rhs) const
    {
        if(lhs < rhs)
            return true;
        else 
            return false;
    }
};

但是这里lhsrhs代表键。如果我想按值而不是键比较怎么办?我该怎么办?

c++ dictionary stl compare stdmap
2个回答
4
投票

的需求无关;是关于std::map想要的。排序基于内存中元素的布局(通常为树形结构),并且此过程使用比较器。希望事实并非如此!

在我看来,std::map因为容器选择不符合您的要求。请查阅容器选择流程图,以决定下一步要做什么。


2
投票

std :: map类型不支持按值比较。如果要按值比较,则应考虑制作一个新的多图,其键代表旧地图中的值,而值代表旧地图中的键。

就是说,听起来您正在尝试根据键的值动态地对键进行重新排序。在这种情况下,您可能需要查看支持减少键的优先级队列,因为这可能与您要执行的操作更加一致。

希望这会有所帮助!

© www.soinside.com 2019 - 2024. All rights reserved.