programing tip

hash_map이 STL의 일부입니까?

itbloger 2020. 12. 11. 07:55
반응형

hash_map이 STL의 일부입니까?


빠른 질문 ... hash_map이 STL의 일부입니까?


STL 에는 hash_map.하지만 C ++ 표준 라이브러리 에는 없습니다 .

일반적인 오해 로 인해 C ++ 표준 라이브러리를 "STL"로 생각하거나 도구 체인의 C ++ 표준 라이브러리 구현의 일부를 "STL 구현"으로 생각할 수 있습니다.

그렇지 않습니다.

또한 MSVC ++와 GCC ( hash_map컴파일러 별 확장으로 구현 됨) std네임 스페이스에 배치하는 것도 큰 수치입니다 . 이는 매우 오해의 소지가있을뿐만 아니라 표준에 따라 불법입니다. *한숨*

C ++ 11이 도입 std::unordered_map되었지만 비슷하지 않습니다.


인용 위키 백과 (강조 추가됨) :

로부터 STL의 페이지 :

STL (표준 템플릿 라이브러리)은 C ++ 표준 라이브러리에 부분적으로 포함 된 소프트웨어 라이브러리 입니다.

... 그리고 hash_map 페이지에서

C ++ 프로그래밍 언어 hash_map 에서은 표준 템플릿 라이브러리에있는 해시 된 연관 컨테이너의 이름입니다 . GNU C ++ 컴파일러 및 Microsoft의 Visual C ++와 같은 여러 구현자가 제공합니다. C ++ 표준 라이브러리의 일부는 아니지만 C ++ 기술 보고서 ​​1에는 unordered_map곧 출시 될 C ++ 0x 표준에 포함될 매우 유사한 컨테이너 가 포함되어 있습니다.

간단히 말해서

  • , STL의 일부입니다.
  • 그러나 그것은 표준 라이브러리의 일부가 아닙니다 .
  • 그러나 여러 가지 매우 인기있는 구현에서 지원됩니다.

문제는 STL 이라는 용어에 대해 합의 된 의미가 없다는 것입니다 . hash_map표준 C ++의 일부? 아니, 그렇지 않습니다. unordered_map그러나 새로운 C ++ 표준의 일부이며 해싱을 사용하여 구현 된 맵입니다.


, STL의hash_map 일부입니다. 그러나C ++ 03 표준 라이브러리의 일부 아닙니다 .


hash_map은 STL의 일부이지만 표준 C ++ (C ++ 11)의 일부는 아닙니다. 표준 C ++에서 "std :: unordered_map"이라는 hash_map의 유사한 구현이 있습니다. 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 표준의 일부가 아닙니다.

참고 URL : https://stackoverflow.com/questions/5908581/is-hash-map-part-of-the-stl

반응형