gpt4 book ai didi

c++ - Std::map 比较函数

转载 作者:行者123 更新时间:2023-11-28 04:51:47 24 4
gpt4 key购买 nike

我想做的是将 map 变成 unordered_map。我需要这个,因为无序映射需要在一开始就初始化,在我的例子中我不能这样做,因为我一开始不知道数据。所以我写了一个比较函数:

    struct MapComparator
{
bool operator()( const string& a, const string& b ) const { return a != b; }
};
typedef std::map<string, SParamData, MapComparator> MapParamData;

这个问题是每当我访问已经使用的字段时,不是获取存储在那里的值,而是创建并返回一个具有相同名称和默认值的新字段。

最佳答案

阅读 std::map 的文档.比较功能描述的 LESS 功能没有什么不同。

键入 std::map被订购并且订单由比较器描述。所以你需要这样的东西(不区分大小写的 key 示例):

struct MapComparator
{
bool operator()( const string& a, const string& b ) const
{
return std::lexicographical_compare(
a.begin(), a.end(),
b.begin(), b.end(),
[](auto ch1, auto ch2) {
return std::tolower(ch1) < std::tolower(ch2);
});
}
};

typedef std::map<string, SParamData, MapComparator> MapParamData;


自 C++11 以来,引入了新的容器。它是 std:: unordered_map .在此容器中,键没有定义任何特定的键顺序。它使用哈希函数来加速匹配。在这种情况下,当您需要自定义键匹配时,您必须提供两个函数:

  • 哈希函数
  • 同等功能

注意如果两项被认为是相等的,哈希函数必须为这两项返回相同的哈希值。

关于c++ - Std::map 比较函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48064431/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com