컨테이넌 같은 타입을 저장, 관리할 목적으로 만들어진 클래스입니다. 컨테이너는 두 가지로 나눕니다 (총 일곱 가지 컨테이너를 제공합니다.)
string 컨테이너는 시퀀스 컨테이너의 일종이지마 ㄴ문자만을 저장하는 컨테이너로 표준 컨테이너의 요구사항을 지키지 못합니다. 이런 컨테이너를 근사 컨테이너(almost container)라 하며 내장 배열 과 valarray도 근사 컨테이너입니다.
또한, 컨테이너는 데이터를 하나의 연속한 메모리 단위로 저장하느냐에 따라 두 가지로 나눕니다.
이런 컨테이너 종류는 성능이나 메모리 사용, 지원 인터페이스 (알고리즘, 멤버 함수) 등에 큰 차이를 보이며 컨테이너의 특징을 만들어 냅니다. 그래서 상당히 중요합니다.
대표적인 컨테이너가 vector 입니다. vector는 시퀀스 컨테이너이며 배열 기반 컨테이너입니다. 시퀀스 컨테이너는 컨테이너 끝에 데이터를 추가하고 제거하기 위한 push_back()과 pop_back() 멤버함수를 가집니다. 또한, 배열 기반 컨테이너는 operator[] 연산자를 이요해 잉ㄹ반 배열처럼 컨테이너 원소에 접근할 수 있습니다. 모든 컨테이너는 원소의 개수를 반환하는 size() 멤버 함수를 가집니다.
#include <iostream>
#include <vector>
using namespace std:
int main()
{
vector<int> v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
v.push_back(50);
for (unsigned int i = 0; i < v.size(); i++)
cout << v[i] << endl;
}
반복자는 포인터와 비슷하게 동작합니다. 반복자는 컨테이너에 저장된 원소를 순회하고 접근하는 일반화된 방법을 제공합니다. 반복자는 컨테이너와 알고리즘이 하나로 동작하게 묶어주는 인터페이스 역할을 합니다. 이 반복자 덕에 알고리즘은 특정 컨테이너에 종속적이지 않고 독립적이면서도 언제든지 컨테이너와 결합하여 동작할 수 있습니다.
반복자는 다음과 같은 특징이 있습니다. 반복자의 특징은 포인터와 같습니다.
STL 에서 컨테이너 원소의 집합을 순차열이라 합니다. 순차열 개념은 원소의 순서 있는 집합을 의미합니다. 순차열은 하나의 시작과 하나의 끝을 갖습니다. 여기서 반복자는 순차열의 한 원소를 가리킵니다.
STL 의 모든 컨테이너는 자신만의 반복자를 제공합니다. 멤버 함수 begin()과 end() 가 순차열의 시작과 끝을 가리키는 반복자를 반환합니다.