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






제가 제대로 알고 있는건가요?