std::map
и std::set
реализуются поставщиками компиляторов с использованием высоко сбалансированных двоичных деревьев поиска (например, красно-черного дерева, дерева AVL).
Как правильно указал Дэвид, find
будет приниматьO (log n) время, где n - количество элементов в контейнере.
Но это с примитивными типами данных, такими как int
, long
, char
, double
и т. Д., Несо строками.
Если в качестве ключа используется std:string
, скажем, размера 'm', для обхода высоты сбалансированного бинарного дерева поиска потребуется log n сравнений заданногоключ с записью дерева.
Когда std::string
является ключом операций std::map
или std::set
, find
и insert
будет стоить O (m log n), где mдлина данной строки, которую нужно найти.