컨테이너 | 내용 |
---|---|
벡터(vector) | 구성 요소에 임의 접근이 가능하다. 요소 끝에 삽입/삭제는 빠르지만, 처음이나 중간 삽입/삭제는 요소 개수에 따라 처리속도가 비례한다. |
데크(deque) | 벡터와 비슷하다. 차이점은 요소 양 끝에 삽입/삭제가 가능하다는 점이다. 성능 또한 벡터와 같이 요소 개수에 따라 처리속도가 비례한다. |
리스트(list | 구성 요소에 선형적으로 접근한다. 요소에 삽입과 삭제가 위치에 상관없이 같은 속도로 처리한다. |
컨테이너 | 내용 |
---|---|
셋(set) | 집합에는 키만 저장할 수 있는데, 키의 중복은 허용하지 않으므로 동일한 키가 2개 존재할 수 없으며, 원하는 키를 신속하게 빠르게 찾아낸다. |
멀티셋(multiset) | 셋과의 차이라면 키의 중복을 허용한다는 점이다. 따라서 2개 이상의 복사본을 가질 수 있다. |
맵(map) | 집합에 키와 데이터를 같이 관리하는데, 키의 중복은 허용하지 않으므로, 동일한 키가 2개 존재할 수 없으며, 키를 사용하여 원하는 객체를 빠르게 찾아낸다. |
멀티맵(multimap) | 맵과의 차이라면 키의 중복을 허용한다는 점이다. 따라서 2개 이상의 복사본을 가질 수 있다. |
vector<T> vec1;
vector<int> vec2;
vector<int> vec1(5);
크기를 5로 지정하였지만, 동적 메모리이므로 필요한 만큼 메모리를 늘릴 수 있다.
#include<iostream>
#include<vector>
using namespace std;
void main()
{
int num;
//cout << "배열의 크기 입력 : ";
//cin >> num;
vector<int>arr;
for (int i = 0; i < 3; i++)
{
arr.push_back(i + 1);
}
for (int i = 0; i < arr.size(); i++)
{
cout << arr[i] << endl;
}
}
출력결과
1
2
3
deque<T> dq;
#include<iostream>
#include<deque>
using namespace std;
void main()
{
deque<int> arr;
for (int i = 0; i < 3; i++)
{
arr.push_back(i + 1);
}
for (int i = 0; i < arr.size(); i++)
{
cout << arr[i] << endl;
}
}
출력결과
1
2
3
#include<iostream>
#include<deque>
using namespace std;
void main()
{
deque<int> arr;
arr.push_back(5);
arr.push_back(4);
arr.push_back(3);
for (int i = 0; i < arr.size(); i++)
{
cout << arr[i] << endl;
}
}
출력결과
5
4
3
list<T> lst;
배열 | 연결리스트 |
---|---|
인접한 메모리 영역에 연속적으로 배치 자신이 기억할 데이터 값만 갖는다. | 요소들이 메모리 도처에 흩어져서 존재 데이터 외에 연결 상태에 대한 정보인 링크를 추가로 가져야 한다. |
struct Node
{
int value; // 데이터
Node next; // 링크
};
#include<iostream>
#include<list>
using namespace std;
void main()
{
list<int> lst; // 리스트
lst.push_back(5);
lst.push_back(4);
lst.push_back(3);
list<int>::iterator it;
for (it = lst.begin(); it != lst.end(); it++)
{
cout << *it << endl;
}
//for (int i = 0; i < arr.size(); i++)
//{
// cout << arr[i] << endl;
// 리스트의 노드들은 서로 근접한 곳에 위치하지 않고 뿔뿔이 흩어져 있으므로 출력X
//}
}
출력
5
4
3
리스트를 출력하기 위해서는 노드를 가리키는 특별한 포인터인 반복자라는 객체를 사용하는데, 바로 iterator라는 녀석이다.
리스트는 데이터가 뿔뿔이 흩어져 있기 때문에 it라는 포인터 변수를 통해서 다음 변수를 찾아가야 한다.