Application/기초

[기초] C++ 컨테이너 (Containers)

devsalix 2024. 5. 2. 07:28
728x90

 

C++은 다양한 유형의 컨테이너를 제공하여 데이터를 구조화하고 관리하는 강력한 도구를 제공합니다.

이러한 컨테이너는 데이터를 저장하고 조작하는 다양한 방법을 제공하여

프로그래머가 작업을 효율적으로 수행할 수 있도록 도와줍니다.

 


 

시퀀스 컨테이너 (Sequence Containers)

 

시퀀스 컨테이너는 데이터를 선형으로 저장하는 컨테이너로, 데이터의 삽입과 삭제가 자유롭습니다.

주요 시퀀스 컨테이너에는 다음이 있습니다

 

  • vector
#include <iostream>
#include <vector>

int main() {
    std::vector<int> vec; // int형 데이터를 저장하는 vector 선언

    // 데이터 삽입
    vec.push_back(10);
    vec.push_back(20);
    vec.push_back(30);

    // 벡터 순회 및 출력
    std::cout << "Vector elements: ";
    for (int i : vec) {
        std::cout << i << " ";
    }
    std::cout << std::endl;

    return 0;
}

 

  • list
#include <iostream>
#include <list>

int main() {
    std::list<int> myList; // int형 데이터를 저장하는 list 선언

    // 데이터 삽입
    myList.push_back(10);
    myList.push_back(20);
    myList.push_back(30);

    // 리스트 순회 및 출력
    std::cout << "List elements: ";
    for (int i : myList) {
        std::cout << i << " ";
    }
    std::cout << std::endl;

    return 0;
}

 

 

연관 컨테이너 (Associative Containers)

 

연관 컨테이너는 데이터를 정렬된 상태로 저장하며, 검색이 빠른 자료구조를 제공합니다.

 

  • set
#include <iostream>
#include <set>

int main() {
    std::set<int> mySet; // 정렬된 유일한 값 저장

    // 데이터 삽입
    mySet.insert(30);
    mySet.insert(10);
    mySet.insert(20);
    mySet.insert(30); // 중복된 값은 저장되지 않음

    // 집합 순회 및 출력
    std::cout << "Set elements: ";
    for (int i : mySet) {
        std::cout << i << " ";
    }
    std::cout << std::endl;

    return 0;
}

 

 

비선형 컨테이너 (Non-Linear Containers)

 

비선형 컨테이너는 계층 구조를 갖는 데이터를 저장하는 데 사용됩니다.

 

  • stack
#include <iostream>
#include <stack>

int main() {
    std::stack<int> myStack; // 후입선출(LIFO) 구조의 스택 선언

    // 데이터 삽입
    myStack.push(10);
    myStack.push(20);
    myStack.push(30);

    // 스택에서 데이터 꺼내기
    std::cout << "Stack elements: ";
    while (!myStack.empty()) {
        std::cout << myStack.top() << " ";
        myStack.pop();
    }
    std::cout << std::endl;

    return 0;
}

 

 

컨테이너 어댑터 (Container Adapters)

 

컨테이너 어댑터는 기본 컨테이너를 기반으로 다른 인터페이스를 제공하는 래퍼 클래스입니다.

 

  • queue
#include <iostream>
#include <queue>

int main() {
    std::queue<int> myQueue; // 선입선출(FIFO) 구조의 큐 선언

    // 데이터 삽입
    myQueue.push(10);
    myQueue.push(20);
    myQueue.push(30);

    // 큐에서 데이터 꺼내기
    std::cout << "Queue elements: ";
    while (!myQueue.empty()) {
        std::cout << myQueue.front() << " ";
        myQueue.pop();
    }
    std::cout << std::endl;

    return 0;
}

 

 

마무리

 

C++ 컨테이너는 각각의 장단점과 사용 사례에 따라 선택되어야 합니다.

프로그램 요구 사항에 맞는 컨테이너를 선택하고 활용하여 작업의 효율성을 극대화하세요.

 

 


제 글이 도움이 되셨다면 댓글 & 공감 부탁드려요 😀

 

 
728x90
반응형