순차 컨테이너
자료를 순차적으로 저장
벡터(vector)
- 동적 배열처럼 동작
- 뒤에서 자료들이 추가됨
- 템플릿으로 설계
- Kvector와 유사
- push_back(): 새로운 데이터를 벡터의 끝에 추가하고 벡터의 크기를 1만큼 증가
- pop_back(): 벡터의 끝에서 요소를 제거하고 벡터의 크기를 하나 감소
vector<int> v1;
vector<int> v2(3); // 초기 값은 0으로, 크기 3만큼
v2.size(); // 크기
v2.max_size(); // 최대 저장 가능한 개수
v2.empty();
v2.capacity(); // 현재 저장 가능한 원소의 수
#define N 3
vector<int> v3(N, 5); // 초기 값은 3으로, 크기 5만큼
v2[4] = 3; // 크기보다 큰 인덱스 값 수정
// 읽는 행위가 아니라 쓰는 행위라서 저장되며 에러 발생 X
v2.clear(); // 메모리 할당을 해제하지 않고 데이터만 삭제
#define N 3
int a[10] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
vector<int> v1(N, 5); // 출력: (3) 5 5 5
vector<int> v2(&a[0], &a[5]); // 출력: (5) 0 1 2 3 4
vector<int> v3(v2); // 복사 생성자, 출력: (5) 0 1 2 3 4
vector<int> v4(&v3[1], &v3[4]); // 반복자, 출력: (3) 1 2 3
vector<int> v5(v3.begin()+1, v3.begin()+4); // 반복자, 출력: (3) 1 2 3
데크(deque)
- 벡터와 유사하지만 앞에서도 자료를 추가 및 삭제하는 연산 가능
- 양쪽에서 입출력 가능한 벡터
- push_front()
- push_back()
리스트(list)
- 벡터와 유사하지만 중간에서 자료를 추가하는 연산 가능
- 임의의 위치에서 입출력 가능
- bidirectional(양방향) 반복자
- 이중 연결 리스트로 구현
- [] operator 없음
- random acess가 안되는 deque라고 볼 수 있음
연관 컨테이너
- key 값에 의해 접근
- 원소들 정렬되어 저장
집합(set)
- 중복이 없는 자료들이 정렬되어 저장
맵
- key-value 형식으로 저장
- key를 기준으로 정렬
- key 중복 X
- map<>::operator[] key가 제시되면 value의 레퍼런스 반환
- bidirectional 반복자
다중-집합
- 집합과 유사하지만 자료의 중복 허용
다중-맵
- 맵과 유사하지만 키가 중복 O
- operator[] 없음
컨테이너 어댑터
- 순차 컨테이너에 제약을 가해서 데이터들이 정해진 방식으로만 입출력
스택
후입 선출 자료 구조
- stl 호출 시 템플릿 매개변수에 & 레퍼런스 붙여야 함
- 안 붙이면 복사 생성자 호출되는데 복사 생성자 잘못 만들면 에러 발생
#include<stack>
#define N 10
stack<int> st;
for(int i=0; i<N; i++) st.push(i);
while(!st.empty()){
cout << st.top() << " ";
st.pop();
}
cout << endl;
// 출력: 9 8 7 6 5 4 3 2 1 0
큐
선입 선출 자료 구조
#include<queue>
#define N 10
queue<int> qu;
for(int i=0; i<N; i++) qu.push(i);
while(!qu.empty()){
cout << qu.front() << " ";
qu.pop();
}
cout << endl;
// 출력: 0 1 2 3 4 5 6 7 8 9
우선 순위 큐
큐의 일종으로 큐위 요소들이 우선 순위를 가지고 있고 우선 순위가 높은 요소가 먼저 출력되는 자료 구조
#include<queue>
#define N 10
priority_queue<int> pq;
for(int i=0; i<N; i++) pq.push(i);
while(!pq.empty()){
cout << pq.top() << " ";
pq.pop();
}
cout << endl;
// 출력: 9 8 7 6 5 4 3 2 1
728x90
반응형
'C++' 카테고리의 다른 글
[C++] 알고리즘 (1) | 2024.04.30 |
---|---|
[C++] 반복자 (0) | 2024.04.30 |
[C++] STL (1) | 2024.04.30 |
[C++] Template (0) | 2024.04.30 |
[C++] Exceptions (0) | 2024.04.30 |