gpt4 book ai didi

c++ - 类模板和仿函数

转载 作者:行者123 更新时间:2023-11-28 00:57:30 26 4
gpt4 key购买 nike

我有以下类(class)

class hash_key {
public:
int get_hash_value(std::string &inStr, int inSize) const {
int hash = 0;
for(int i = 0; i < (int)inStr.size(); i++) {
int val = (int)inStr[i];
hash = (hash * 256 + val) % inSize;
}
return hash;
}
};

我想将它传递给我的另一个模板类,以便我可以调用 get_hash_value如何做到这一点 是否有任何方法可以使用 operator()()

实现同样的效果

最佳答案

像这样:

class hash_key {
public:
hash_key(std::string& inStr, int inSize) : size(inSize), str(inStr) {}
int operator()() const
{
int hash = 0;
for(int i = 0; i < (int)str.size(); i++) {
int val = (int)str[i];
hash = (hash * 256 + val) % size;
}
return hash;
}

private:
std::string str;
int size;
};

Now you can do:

std::string str = "test";
hash_key key(str, str.size());

//pass below to template, calls `operator()()`
key();

关于c++ - 类模板和仿函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10295579/

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