본문 바로가기
개발 언어/cpp

CPP Container와 Iterator

by eeeun:) 2022. 1. 17.
반응형

Container

cpp에서 처음 접한 개념

container가 뭘까?

 

container는 말 그대로 저장소로라고 생각하면 쉽다.

같은 타입의 여러 객체를 저장하는 일종의 집합이다.

컨테이너는 클래스 템플릿이다.

컨테이너 변수를 선언할 때 컨테이너에 포함할 요소의 타입을 명시할 수 있다.

그렇다면 왜 배열을 안 쓰고 container를 쓸까?

 

container 종류 중 하나인 "vector"를 예로 들어 생각해보자.

int a[10]과 같이 선언해서 int 배열을 쓸 수 있는데, 굳이 왜 vector를 쓸까?

int a[10];

vector<int> b(10);

vector에는 배열에 특화된 여러 유용한 함수들을 가지고 있다.

예로 뒤에 값을 추가할 수 있는 push_back이 있다.

많은 값을 저장하는 것에 특화되어 있어 container 많이 씀!

 

Iterator

컨테이너에 저장된 원소에 접근할 수 있는 반복자

container는 다음 값을 +로 갈 수 없다.

밑에 코드를 보자.

int a[10];
vector<int> b(10);

a++; <- 가능
b++; <- 불가능

int a[10];로 선언한 a는 0번째 인덱스에서 1번째 인덱스로 이동할 때 +를 통해 이동할 수 있다.

하지만 vector로 선언한 b는 +로 다음 값으로 넘어갈 수 없다.

container는 다음 값 이동을 위해서 iterator를 사용한다!

 

iterator은 아래 코드와 같이 vector.begin()로 백터의 맨 앞을 찾아 + 연산을 통해 다음 값으로 이동 가능!

vector<int> v{ 1, 2, 3, 4};
vector<int>::iterator iter_v;

for (iter_v = v.begin(); iter_v != v.end(); iter_v++) {
	cout << *iter_v << endl;
}

 

728x90

'개발 언어 > cpp' 카테고리의 다른 글

CPP friend 클래스와 함수  (0) 2022.01.18
CPP template  (0) 2022.01.17
CPP struct class 기본 액세스 한정자  (0) 2022.01.17
uint32_t 자료형이란?  (0) 2022.01.14
cpp 난수 생성 (random number generation) : PRNG  (0) 2022.01.08

댓글