본문 바로가기

(비정기) Dlbo's Post

Generic Algorithm with C++, 02 - Template Vector.

우후.

오늘도 야근이 없었습니다만...

라인이 몇번 연타로 끊겨먹는 바람에 날뛰었더니 손이 쪼까 개판이네요.

오타 있음 꼭 지적해 주시길... -_-;

-------------------------------------------------------------------------------------

Vector 템플릿은 이전 포스트에서 코드 예시로 보였던 것처럼 vector를 인클루드 시켜야 합니다.

vector.h가 아니니 주의하시길...

Vector 템플릿 클래스는 "동적 배열" 이라고 보시면 됩니다.

가장 간단한 것부터 보도록 하지요.



size 메소드는 벡터의 사이즈를 리턴합니다.

자, 그럼 사이즈를 재조정하는 방법도 알아야 하겠지요?



벡터의 사이즈가 재조정됩니다.

자,

근데 벡터에 데이터를 우째 넣느냐구요?-_-?

간단합니다.



요래도 됩니다. ㅡ.,ㅡ....

배열이나 마찬가지이지요.

메소드를 이용한 멋있는 방법이 없느냐구요?



단순하지요?

여기서 잠깐, insert() 메소드에서 va1.begin() 부분에 itva1을 이용해서

원하는 위치로 이동한 후 itva1을 대신 사용한다면

원하는 위치에 삽입이 가능합니다.

혹은, va1.begin() + 인덱스넘버

를 이용해 삽입할 수도 있지요.

반면, 지우기 위해서는 아래의 메소드, erase를 사용하면 됩니다.



자...

vector는 동적 배열입니다.

자동으로 반복해서 메모리를 재할당 하기 때문에,

insert나 erase시 포인터인 반복자가 가리키는 위치는 당연히 다른 세계가 되어버리지요.

뭐... 운이 좋다면 그대로겠지만 말입니다.

ㅡ.,ㅡ;

이 점에 매우 주의해야 하지요.

아참, 반복자에 대해 설명을 하지 않고 넘어갔네요.

반복자

- Linked List등의 자료구조에서 해당 노드에 대해 하나 하나를 직접 엑세스 할 수 없어

포인터를 이용해 간접 접근을 할 때 쓰는 포인터를 지칭.

단순하지요?

STL의 반복자는 포인터로 되어 있으며,

++이나 --연산시 자동으로 앞뒤로 이동한답니다.

위의 for문을 이용한 코드에 보면 나온 itval++연산을 보면 알 수 있지요.

마지막으로 소개해 드릴 것은...

assign 연산입니다.

뭔지 아시겠지요?-_-?

이어 붙이는겁니다 ㅋㅋ



자.

이리 하면,

a1에 a2의 내용이 이어붙여 집니다.

지금은 둘다 아무것도 안들어있으니 상관 없지요 -ㅁ-

-------------------------------------------------------------------------------------

으흠... 아무래도 손 문제로 vi 분석은 힘들듯 합니다.

-ㅁ-;;

손이 회복되는대로 다시 뵙겠습니다;