为std::map定义一个比较函数,它使用值而不是键
Define a compare function for std::map which uses values instead of keys
我可以像这样为一个映射定义一个比较类:
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类型不支持按值比较。如果要按值进行比较,应该考虑创建一个新的multimap,其键代表旧映射中的值,其值代表旧映射中的键。
也就是说,这听起来像是您试图根据键的值动态地重新排序键。在这种情况下,您可能需要查看支持减少键的优先级队列,因为这可能更符合您要做的事情。
希望这对你有帮助!
相关文章:
- C++自定义比较函数
- 使用自定义比较函数使用std::sort()对矢量字符串进行排序时出现问题
- C++模板函数,用于比较任何无符号整数和有符号整数
- 函数类作为比较器
- 什么是自定义比较器以及如何在 C++ 的排序函数中使用它?
- 没有默认构造函数作为模板参数的自定义比较器
- std::max() 函数与定点实现的比较中的问题
- 如何比较两个函数的速度和性能
- 对没有比较器或λ函数的向量进行排序?
- 使用迭代器的自定义比较器函数
- 隐式转换为比较函数对象(函子)用于 std::sort 而不是 std::map?
- 比较 n 女王的 next_permutation 函数
- 用于基于成员字段或函数创建比较器的快捷方式
- 为什么 std::stable_sort() 的比较函数的参数必须是设置常量?
- 为什么在类或结构中传递自定义比较器函数?
- 浮点数比较为什么没有相等的函数
- 通过默认复制构造函数比较 C++ 字符串是否会影响性能,原因为何?
- 为什么函数比较器不像在排序中那样在优先级队列中工作?
- c++ STL集合的比较函数:比较函数可以是类的成员函数吗?
- 联合值的单函数比较