从字符串列表中找到最快的字符串

时间:2013-10-16 10:22:16

标签: c++ c++11 data-structures stl

我有一个字符串列表,我必须查找该列表中是否存在字符串。我想在低延迟定价引擎中使用逻辑,所以我想拥有真正的快速逻辑。 我想把这些字符串存储在map中作为键,然后可以使用find()或count()函数。 任何人都可以建议任何其他更有效的逻辑吗?

2 个答案:

答案 0 :(得分:3)

可能std::unordered_set可能是您需要的合适选择。然后,您将使用find()检查字符串是否存在。像example code here

这样的东西
#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

答案 1 :(得分:-2)

我刚才想到的另一种方法是,

将字符串列表放在单个分号分隔的字符串中,然后使用strfind。

e.g。

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)