gpt4 book ai didi

c++ - 比较 50 个以上字符串的有效方法

转载 作者:行者123 更新时间:2023-12-02 00:25:59 27 4
gpt4 key购买 nike

我有一个方法,它采用两个参数,一个作为string,另一个作为int

该字符串必须与50个以上的字符串进行比较,一旦找到匹配,int值需要与硬编码字符串进行映射,如下例所示

例如:

  string Compare_Method(std::string str, int val) {

if(str == "FIRST")
{
std::array<std::string, 3> real_value = {"Hello1","hai1","bye1"}
return real_value[val];
}

else if(str == "SECOND")
{
std::array<std::string, 4> real_value = {"Hello2","hai2","bye2"}
return real_value[val];
}

else if(str == "THIRD")
{
std::array<std::string, 5> real_value = {"Hello3","hai3","bye3"}
return real_value[val];
}

//----- 50+ else if

}

我的做法如上。有效的方法是什么

1.比较50个以上的字符串。

<强>2。为每个 if 情况创建 std::array

已编辑:std::array 大小不固定,可以是上面编辑的 3,4,5。

最佳答案

这就是我这样做的方式。数据结构仅创建一次,访问时间应该足够快

#include <iostream>
#include <string>
#include <array>
#include <unordered_map>

std::string Compare_Method(const std::string& str, int val)
{
// or std::vector<std::string>
static std::unordered_map<std::string, std::array<std::string, 3>> map
{
{ "FIRST", { "Hello1", "hail1", "bye1" }},
{ "SECOND", { "Hello2", "hail2", "bye2" }},
{ "THIRD", { "Hello3", "hail3", "bye3" }},
// 50+ more
};

// maybe check if str is present in the map

return map[str][val];
}

int main()
{
std::cout << Compare_Method("SECOND", 1) << std::endl;
}

如果 std::unordered_map 对您来说不够(快),您可以想出某种静态最佳哈希结构,因为键在编译时是已知的。

关于c++ - 比较 50 个以上字符串的有效方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59177728/

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