Sequence Container 시퀀스 컨테이너
리스트 (List)
- 저장할 데이터 개수가 가변적일 때 사용
- 데이터가 중간에 삽입되거나 삭제되는 경우가 많을 때 용이
- 데이터의 개수가 크거나 검색을 자주하면 비효율적 -> map, set, hash_map 사용하기
- 데이터에 임의 접근하지 않을 때 사용. (리스트는 '순차접근')
백터(Vector)
- 동적 배열 - 객체를 삽입/제거시 자동으로 크기를 조정
- 저장할 데이터의 개수가 가변적일 때 사용
- 데이터가 중간에 삽입/삭제 되는 경우가 없을 때 사용
- 순차 저장이므로 검색속도가 느리다
- 데이터 임의 접근에 용이 (위치만 알면 바로 접근 가능)
메서드 종류 - push_back()
덱(deque)
- 데이터를 앞이나 뒤에서 삽입/삭제 가장 빠름
- 저장할 데이터 개수가 가변적일 때 사용
- 검색을 하지 않는다
- 데이터 임의 접근에 용이 (위치만 알면 바로 접근 가능)
Association Container 연관 컨테이너
맵(Map)
- key와 value 쌍으로 이루ㅇ져 pair 객체 형태로 저장
- 많은 데이터를 정렬할 때 사용
- 검색 속도가 빠름
- 데이터의 삽입과 삭제가 자주 일어나는 경우 사용하지 않는다
- 맵은 자동으로 key를 기준으로 정렬(오름차순), 때문에 정렬이 필요하지 않은 경우는 hash map을 사용한다.
- 키 값이 유일하다
메서드 : M.insert({1,"item1"}
map<int, string>::iterator iter;
for (iter = M.begin(); iter != M.end(); ++iter)
{
cout << "Number : " << (*iter).first << " Name : " << (*iter).second << endl;
}
// 맵을 이용한 iterator 구현
셋(Set)
- key만 저장한다
- 정렬이 필요할 때 사용
- key의 존재 유무를 알고 싶을 때 사용
- 많은 자료를 저장 + 검색 속도가 빠르다
- 중복키는 사용 불가
'알고리즘 이론' 카테고리의 다른 글
[순열] 순열 구현하기 C++ (0) | 2022.03.06 |
---|---|
[알고리즘 이론] Floyd Warshall 플로이드 와샬 알고리즘 C++ (0) | 2022.02.22 |
[이론] 이진탐색 (Binary Search) - c++ (1) | 2022.02.09 |
[알고리즘 이론] 정렬 알고리즘 (0) | 2021.06.21 |
[알고리즘 이론] 시간 복잡도 (1) | 2021.06.21 |