c++中使用字符串hash函数加switch
时间: 2024-02-26 10:58:15 浏览: 213
在C++中使用字符串hash函数加switch可以实现快速的字符串匹配,可以避免使用if-else语句进行逐个比对,从而提高程序的效率。具体实现步骤如下:
1. 定义字符串hash函数,将字符串转化为一个整数,可以使用STL中的hash函数或自己实现一个hash函数。
2. 在switch语句中使用hash值进行匹配,每个case语句匹配一个特定的hash值,从而实现字符串的匹配。
示例代码如下:
```c++
#include <iostream>
#include <string>
#include <functional>
using namespace std;
// 定义字符串hash函数
struct StrHash {
size_t operator()(const string& str) const {
return hash<string>()(str);
}
};
int main() {
unordered_map<size_t, string> map = {
{hash<string>()("hello"), "Hello World!"},
{hash<string>()("world"), "World Hello!"},
{hash<string>()("good"), "Good Morning!"},
{hash<string>()("night"), "Good Night!"}
};
string str;
cout << "Please enter a string: ";
getline(cin, str);
// 使用字符串hash值进行匹配
switch (hash<string>()(str)) {
case hash<string>()("hello"):
cout << map[hash<string>()("hello")] << endl;
break;
case hash<string>()("world"):
cout << map[hash<string>()("world")] << endl;
break;
case hash<string>()("good"):
cout << map[hash<string>()("good")] << endl;
break;
case hash<string>()("night"):
cout << map[hash<string>()("night")] << endl;
break;
default:
cout << "Unknown input!" << endl;
break;
}
return 0;
}
```
注意:使用字符串hash函数加switch时,需要保证hash函数的唯一性,否则可能会出现hash冲突,导致匹配错误。
阅读全文