저번 시간에 이어 vector 컨테이너에 대해 알아 보도록 하겠습니다.
vector 컨테이너는 배열 기반 컨테이너 이므로 일반 배열처럼 임의 위치의 원소를 참조하는 두 인터페이스를 제공합니다.
바로 [ ] 연산자, at( ) 멤버함수입니다.
두 인터페이스의 기능은 같지만 [ ] 연사자는 범위 점검을 하지 않아 속도가 빠르며 at( ) 멤버 함수는 범위를 점검하므로 속도는 느리자만 안전합니다.
예제를 통해 이해해 보도록 하겠습니다.
<vector의 [ ]연산자와 at( ) 멤버 함수>
@
->[ ] 연산자는 범위 점검 없이 동작하며 at( ) 멤버 함수는 범위 점검을 하며 동작합니다. 만약 at( ) 멤버 함수 사용시 범위를 넘어가게 되면 범위 오류인 out_of_range 가 발생하게 됩니다.
이번엔 반복자에 대해 알아 보도록 하겠습니다.
컨테이너는 모든 원소의 시작과 끝을 가리키는 반복자 begin( )과 end( ) 멤버 함수로 제공합니다.
< vector의 begin( )과 end( )>
@
->iter는 반복자이며 ++연산자로 다음 원소로 이동하고 *연산자로 가리키는 원소를 참조합니다.
그림으로 보니 이해하기 더 쉽죠?ㅎㅎ
배열 기반 컨테이너인 vector와 deque는 임의 접근 반복자를 제공하며 임의 접근 반복자는 +, -, +=, -=, [ ]연산이 가능합니다.
<insert( ) 멤버 함수의 사용>
-> 반복자가 가리키는 바로앞에 값이 삽입되내요^^
삽입을 했다면 삭제도 있어야 겟죠?
<erase( ) 멤버 함수의 사용>
->v.erase(iter) : iter가 가리키는 위치의 원소(30)을 제거. 제거된 원소의 다음 원소를 가리키는 반복자를 반환
->v.erase(v.begin( )+1, v.end( )) : 구간 [v.begin( )+1, v.end( ))의 원소 (20,40,50)을 제거
vector 컨테이너의 몇가지 멤버함수를 알아 봤는데요. 이 외에도 더많은 함수를 제공한답니다.
오늘로서 표준 시퀀스 컨테이너이자 배열기반의 컨테이너인 vector의 포스팅을 마치고 다음시간에 deque에 대해 알아 보도록 하겠습니다.
글이 딱딱한 느낌인데 재밋게 써보도록 해보겠습니다^^
'Programming Language > C++' 카테고리의 다른 글
7. vector 컨테이너(1) (0) | 2016.06.03 |
---|---|
6. 템플릿 (0) | 2016.06.01 |
5.함수 객체 (0) | 2016.06.01 |
4. 함수 포인터 (1) | 2016.06.01 |
3. STL에 필요한 주요 연산자 오버로딩(2) (4) | 2016.06.01 |