gpt4 book ai didi

C++ 如果这些函数在构造函数中传递,我如何使用带有自定义散列和比较的 unordered_map 作为成员变量?

转载 作者:行者123 更新时间:2023-12-01 14:48:03 25 4
gpt4 key购买 nike

假设我有这门课

class C {
private:
std::unordered_map<struct MyStruct, int> map;
public:
C(size_t(*hash)(const struct MyStruct &t1), bool(*comp)(const struct MyStruct &t1, const struct MyStruct &t2);
}

如何在我的 unordered_map 中使用函数指针但仍然有 map 作为成员变量?因为当我在Constructor中拿到这些函数指针的时候,map已经创建好了。

最佳答案

考虑到您已经用 C++14 标记了 Q,我将用 std::function 发布我的答案。 s 而不是函数指针。你可以写你的类 C像这样:

using hash_t = std::function<size_t(const struct MyStruct &t1)>;
using comp_t = std::function<bool(const struct MyStruct &t1, const struct MyStruct &t2)>;

class C
{
private:
std::unordered_map<struct MyStruct, int, hash_t, comp_t> map;

public:
C(int bucket_size, hash_t hasher, comp_t comper) :
map(bucket_size, hasher, comper)
{
}
};

然后使用所需的参数实例化您的类。见 live demo这里。

关于C++ 如果这些函数在构造函数中传递,我如何使用带有自定义散列和比较的 unordered_map 作为成员变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61444300/

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