我有一个字符串列表,我必须找出该列表中是否存在字符串。我想在低延迟定价引擎中使用逻辑,所以我想为它提供真正快速的逻辑。我想将这些字符串作为键存储在 map 中,然后可以使用 find() 或 count() 函数。任何人都可以为此提出任何其他更有效的逻辑吗?
问问题
1203 次
2 回答
5
可能std::unordered_set
是满足您需求的合适选择。然后,您将使用find()
检查字符串是否存在。类似于此处的示例代码:
#include <iostream>
#include <string>
#include <unordered_set>
int main() {
std::unordered_set<std::string> myset{ "red", "green", "blue" };
std::cout << "color? ";
std::string input;
std::cin >> input;
auto pos = myset.find(input);
if (pos != myset.end())
std::cout << *pos << " is in myset\n";
else
std::cout << "not found in myset\n";
}
要了解其std::unordered_set
工作原理,请参阅hash set。
于 2013-10-16T11:21:51.893 回答
-2
我刚才想到的另一种方法是,
将字符串列表放在单个分号分隔的字符串中,然后使用 strfind。
例如
List of string, <ABC,DEF,GHI,JKL,MNO,PQRS,LMNOPQR, STUVW,XY,Z>
l_czEIDHolder = “ABC;DEF;GHI;JKL;MNO;PQRS;LMNOPQR; STUVW;XY;Z”
if string_to_search = “PQRS”
make string_to_search = string_to_search +”;”
strfind(czEIDHolder, string_to_search) OR
string::find(czEIDHolder, string_to_search)
于 2013-10-16T11:11:22.570 回答