С помощью std вы можете сделать:
//Gathering Largest Temperature:
auto max = std::max_element(std::begin(yearData), std::end(yearData),
[](const auto& lhs, const auto& rhs){
return lhs.highTemperature < return rhs.highTemperature;
});
auto max_index = std::distance(std::begin(yearData), max);
// Gathering Smallest Temperature:
auto min = std::min_element(std::begin(yearData), std::end(yearData),
[](const auto& lhs, const auto& rhs){
return lhs.lowTemperature < return rhs.lowTemperature;
});
auto min_index = std::distance(std::begin(yearData), min);
Я не думал об этом как о проблемной области прежде, но теперь, когда Вы упоминаете это, существуют времена, когда стандартная реализация Trie могла бы быть удобной. С другой стороны, насколько я знаю, Попытки используются Python и Perl и другими опытными строкой языками, которые я использую теперь.
В последний раз я проверил, который был давным-давно, код ядра BSD использовал Tries (Patricia Tries) в коде для выбора лучшего интерфейса для отправки пакетов. Похож на Википедию, имеет некоторую информацию.
Вы могли просто создать два демонстрационных приложения и видеть, какой работает лучше. Доступ к памяти является дешевым предположением, что Вы не разбиваете на страницы отказ. Затем это очень дорого. Для разработки клиентского приложения, почти всегда лучше для обработки, чем к памяти доступа по этой самой причине. Современные процессоры являются смехотворно быстрыми, но неудачными обращениями в кэш все еще вред.
Я сделал некоторое тестирование производительности в C# с Trie и Словарем (хеш-таблица со строгим контролем типов). Я нашел, что Словарь был в 5-10 раз быстрее, чем Trie. Возможно, моя реализация Trie могла быть оптимизирована немного, но едва достаточно быть намного быстрее, чем (или возможно как раз когда быстро как) Словарь.
Метод ContainsKey в словаре близко к O (1) операция (в зависимости от того, насколько хороший алгоритм хеширования), таким образом, не легко сделать набор, который бьет это, пока алгоритм хеширования довольно быстр.
С пользовательским IEqualityComparer можно использовать больше всего что-либо в качестве ключа в Словаре, который делает его довольно гибким. Trie немного более ограничен в том, что можно использовать в качестве ключа, так, чтобы пределы полноценность несколько.