我有一个std::map
这样的自定义键:
struct Foo
{
Foo(int _uid, int _priority) : unique_id(_uid), priority(_priority) {}
bool operator<(const Foo& other) const {
return priority < other.priority;
}
int unique_id;
int priority;
};
我正在使用以下代码创建地图:
std::map <Foo, int> bla;
这就是我插入项目的方式:
bla.insert(std::pair<Foo, int> (Foo(1,2), 3) )
这很好用,排序也很有效。但我的问题是,我怎样才能找到一个项目unique_id
?该find
函数需要 a Foo
,而这需要 a priority
,而我在查询它时没有。
我更想将优先级存储在值中(而不是作为键),但我不知道如何按值排序。是一个std::map
正确的类/模板吗?
编辑:我没有能力使用提升,优先级也不是唯一的。