2012-04-29 3 views
2

STL에서 vector은 동적 배열의 구현을 나타냅니다. 따라서 list은 연결된 목록 (이중 연결된 목록)의 구현을 나타냅니다. set에는 트리와 비슷한 구현이 있다는 것을 알고 있습니다. 언급 된 바와 같이 알고리즘 복잡성을 살펴보면 집합의 inbuilt 함수의 대부분은 o (1) 또는 o (log n)입니다. 이 트리는 밸런스 트리 또는 레드 - 블랙 트리와 같은 다른 종류의 트리로 구현 되었습니까? 그렇다면 왜 그러한 트리 구조가 선택 되었습니까?어떤 종류의 트리 구현이 STL로 설정되어 있습니까?

+0

정말로 STL을 의미합니까, 아니면 STL "C++ Standard Library"로 흔히 혼동합니까? – Griwes

답변

10

표준은 구현에 제한을 두지 않습니다 (복잡성 보장 제외).

즉, 구현에 따라 다릅니다. 일반적으로 빨간색 - 검정색 트리입니다 (예 : /usr/include/c++/x.y.z/bits/stl_tree.h, x.y.z은 특정 GCC 버전 임).

+0

나는 std :: set을 사용하고 그 안에 값을 삽입한다. 트리의 종류에 특정한 것을 만들지는 않는다. 내 설정은 반드시 바이너리 또는 빨강 검정 또는 균형을 가져야한다. 그래서 실제로 구현에 의존적입니까? – Invictus

+0

@Ritesh : 요점은 무엇인지 모르겠지만 그렇습니다. 실제로 구현에 따라 다릅니다. –

+2

C++ 표준의 컨텍스트에서 "구현 종속적"은 컴파일러/라이브러리 공급 업체가 구현 방법을 결정하는 것은 개발자의 몫이라는 것을 의미합니다. @Ritesh라는 코드를 사용하여 라이브러리를 작성하는 방법과는 아무런 관련이 없습니다. – Mat

관련 문제