Какой алгоритм стоит за поиском STL?

Я только что создал специальную функцию поиска строк на карте. Я разработал какой-то алгоритм линейного поиска (о котором узнал позже) и не был удовлетворен скоростью работы функции. Поэтому я поискал более быструю функцию и нашел собственную функцию карты: map :: find .

Это было невероятно быстрее, чем линейный алгоритм, который я использовал.

В другом примере функция STL find также была намного быстрее, чем другая линейная функция I. я использую.

Но как это возможно? Если вы используете алгоритм двоичного поиска, вам нужно сначала отсортировать карту, что займет (гипотетически) больше времени, чем больше ваша карта.

Также как узнать алгоритмы, лежащие в основе этих основных функций? Есть ли список или какая-то база данных, чтобы узнать об этом?

Спасибо за все ваши ответы! Я проголосовал за лучшие ответы и принял ответ Макса Либберта, потому что он был наиболее подробным.

Пол :)

9
задан Paul 25 April 2013 в 13:30
поделиться