STL에서 std::map 에 넣은 값을 앞에서 부터 꺼내면 넣은 순서대로 나오나요?
std::map 에
(1, A)
(3, C)
(2, B)
(4, D)
라고 값을 넣는다면
typedef std::map<int> MapThing;
MapThing m_mapThing;
m_mapThing.insert(1, A);
m_mapThing.insert(3, C);
m_mapThing.insert(2, B);
m_mapThing.insert(4, D);
MapThing::iterator iter = MapThing.begin();
MapThing::iterator iterEnd = MapThing.end();
for ( ; iter != iterEnd; ++iter )
{
Name name = iter->second;
name.print();
}
이 결과는
A
C
B
D
가 맞나요?
제가 생각한 것은 맵의 인덱스만 균형이진트리로 관리되고
실제값은 따로 리스트화 되어 저장된다고 생각했거든요
그래서 값이 들어가면 리스트뒤에 그냥 순차적으로 실제 값이 추가되고
키값과 그 리스트의 위치를 가르키는 인덱스만 다시 정렬된다고 생각했습니다
* 인덱스(균형이진트리)
root
/ |
[2+B의 주소] [3+C의 주소]
/ |
[1+A의 주소] [4+D의 주소]
* 실제 자료 리스트
header-A-C-B-D
제가 제대로 알고 있는건가요?