[c++] STL 컨테이너 내부 구조

STL(Standard Template Library)의 컨테이너는 다양한 데이터를 저장하고 관리하는 역할을 합니다. 다양한 종류의 컨테이너가 제공되며, 각 컨테이너는 다양한 내부 구조를 가지고 있습니다. 이번 글에서는 STL 컨테이너의 내부 구조에 대해 자세히 알아보겠습니다.

벡터 (Vector)

벡터는 동적 배열을 표현하는데 사용되는 컨테이너입니다. 벡터는 배열과 유사하지만, 크기를 변경할 수 있습니다. 내부적으로 연속된 메모리 공간에 요소를 저장하며, 요소의 추가 및 삭제 시 다른 요소들을 이동시켜야 할 수도 있습니다.

#include <vector>

int main() {
    std::vector<int> vec;
    vec.push_back(10);
    vec.push_back(20);
    vec.push_back(30);
}

리스트 (List)

리스트는 이중 연결 리스트로 구현된 컨테이너입니다. 각 요소는 다음 요소의 주소를 가지고 있어 순차적으로 접근하며, 삽입 및 삭제 연산이 빠르지만 임의 접근 속도는 느립니다.

#include <list>

int main() {
    std::list<int> l;
    l.push_back(10);
    l.push_back(20);
    l.push_back(30);
}

맵 (Map)

맵은 키-값 쌍을 저장하는 연관 컨테이너입니다. 내부적으로 이진 탐색 트리로 구현되어 있어 검색 및 삽입 연산이 빠릅니다.

#include <map>

int main() {
    std::map<std::string, int> m;
    m["one"] = 1;
    m["two"] = 2;
    m["three"] = 3;
}

위의 예시들을 통해 각 STL 컨테이너의 내부 구조에 대해 간략히 살펴보았습니다. STL 컨테이너는 다양한 용도에 맞게 설계되어 있으며, 사용 시 내부 구조를 이해하는 것이 중요합니다.

참고 자료