У меня есть unordered_map, его ключ и значения имеют строковый тип.
ключ - регулярное выражение.
Количество элементов на карте составляет около 2,50000.
Мне нужно найти элемент, чей ключ (регулярное выражение) возвращает ровно одно совпадение со строкой, полученной в запросе.
Когда я перебираю карту по каждому элементу, в худшем случае это занимает около 10 секунд.
Мой пример кода:
string string_to_match = "Find my Regex";
for (MyMap::const_iterator it = myMap.begin();
it != myMap.end(); ++it) {
//cout << it->first << "\n";
if (regex_match( string_to_match ,
regex(it->first,std::regex::ECMAScript | std::regex::icase))) {
cout << ", " << it->second << "\n ";
break;
}
++it;
}
Можно ли как-нибудь сократить время, затрачиваемое ...