Является ли hash_map частью STL?
Быстрый вопрос … Является ли hash_map частью STL?
- Как читать растущий текстовый файл на C ++?
- stl :: multimap - как получить группы данных?
- Правильно ли упорядочен порядок std :: pair ?
- Почему я получаю одну и ту же последовательность для каждого запуска с помощью std :: random_device с mingw gcc4.8.1?
- как вы вставляете значение в отсортированный вектор?
- Где я могу получить «полезный» алгоритм бинарного поиска C ++?
- уменьшить емкость stl-вектора
- Как удалить константу const_iterator?
STL имеет hash_map
, но в стандартной библиотеке C ++ этого нет .
Из- за распространенного заблуждения вы можете подумать о стандартной библиотеке C ++ как о «STL» или о части вашей инструментальной цепочки, реализующей стандартную библиотеку C ++ как «реализацию STL». Это не.
Также очень стыдно, что и MSVC ++, и GCC (которые реализуют hash_map
как расширение, специфичное для компилятора), поместите его в пространство имен std
, что сильно вводит в заблуждение. *вздох*
В C ++ 11 был введен std::unordered_map
, который не отличается.
Цитирование Wikipedia (выделено мной):
На странице STL :
Библиотека стандартных шаблонов (STL) – это библиотека программного обеспечения, частично включенная в стандартную библиотеку C ++.
… и затем с страницы hash_map
На языке программирования C ++
hash_map
– это имя хешированного ассоциативного контейнера в стандартной библиотеке шаблонов . Он предоставляется несколькими разработчиками, такими как компилятор GNU C ++ и Visual C ++ Microsoft. Он не является частью стандартной библиотеки C ++ , но технический отчет C ++ 1 содержит очень похожий контейнерunordered_map
, который будет включен в следующий стандарт C ++ 0x.
Короче говоря,
- ДА, это часть STL.
- Но это НЕ входит в стандартную библиотеку.
- Но это поддерживается несколькими очень популярными реализациями.
Проблема заключается в том, что не существует согласованного значения термина STL . Является ли hash_map
частью стандартного C ++? Нет, это не так. unordered_map
будет частью нового стандарта C ++ и представляет собой карту, реализованную с использованием hashирования.
Да , hash_map
является частью STL . Однако он не является частью стандартной библиотеки C ++ 03.
hash_map является частью STL, но не является частью стандартного C ++ (C ++ 11). И аналогичная реализация hash_map с именем «std :: unordered_map» в стандартном C ++: http://www.cplusplus.com/reference/unordered_map/unordered_map/
В настоящее время GNU C ++ и MSVC ++ реализовали hash_map для расширения компилятора, а также Boost. Между тем, SGI имеет собственную реализацию для hash_map. Подробнее см. http://www.sgi.com/tech/stl/hash_map.html .
Нет … Hash_map не входит в стандарт STL.