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
반응형