C++ STL인데도 C를 다뤄 C++에 입문한 사람이라면 STL의 편리함에 감탄하는 사람도 있는 반면 그렇지 않은 사람도 있다. 필자는 예전에는 낯설고 어떻게 쓸지 몰라 전혀 사용하지 않았지만 쓰면서 마냥 감탄할 뿐이다. 따라서 이 Vector를 어떻게 사용하는지를 간단하게 서술하고자 한다.
선언 #include <vector>
벡터 간략 구조

대개 이런 구조다.
예를 먼저 보면서 이해해 보자.
STLvector는 마치 Linked List처럼 삽입이나 소거가 가능한데도 배열처럼 데이터를 운용할 수 있다는 장점이 있다.
그리고 STL을 사용하는 가장 큰 이유는 이렇게 데이터를 관리할 때 임의의 데이터 유형이라도 바로 우리가 잘 알고 있는 데이터 구조를 올바르게 만들어 굴릴 수 있기 때문이다.
- 선언, 데이터 insert 백터의 선언은 다음과 같다.vector < type 이름 > variableName;
- 지금은 단순히 int로 했지만 나중에 전화번호부를 만들거나 하면 사람에 대한 class 정보를 가지고 자료 구조로 만들어 쓸 필요가 있을 때가 온다. 그럴 때 쓰면 정말 도움이 돼.
- push_back() 함수를 통해 vector 타입과 맞는 데이터를 넣을 수 있다.
- 2. ‘벡터 for로 돌리는 Vectoriteration’이라는 멋진 말이 있다. 하지만 말이 중요한 게 아니라 결국 vector 전체를 한번 보고 싶을 때 어떻게 하느냐가 중요하다. 배열과 같이 생각하면 다음과 같이 짤 수 있다.
- 벡터의 크기를 나타내는 size( )로 총 개수를 받고, 그만큼 index를 0에서 해당하는 크기만큼 돌게 된다. 이 방법의 장점은 기존 배열과 for 문 돌아가는 것이 거의 비슷해 vector 사용에 거리감이 없어진다. 하지만 vector로 쓰는 것이 아니라 배열처럼 쓰는 것이기 때문에 다른 vector의 좋은 기능과는 호환되지 않는다는 것이 단점이다.
- 다음 for문 볼까요?갑자기 이터ator가 나와서 거부감이 들 거야. iterate는 배열 같은 것을 for 같은 것으로 한 바퀴 도는 것이고, iterator는 그것을 한다는 것이다.
- for문의 초기식을 다음과 같이 설정한다.vector <int> :: itteratorit=intVector.begin( ) 여기서 맨 위의 간단 구조를 보고하자.

begin이 맨 앞의 자료를 가리킨다. 그리고 * it를 통해 참조하여 그 데이터를 얻는다.
배열로 보면
intarr[4] = {0,1,2,3};
에서 arr[0]의 주소 즉, &arr[0]에 해당하는 것.쉽게 말해 배열의 맨 앞주소로 보면 이해하기 쉽다.
intVector.begin( ) 이것으로 해당 주소를 vector <int> :: itterator 타입 변수 it에 넣어준다는 것이다.it는 변수 이름이므로 다른 것을 넣어도 된다.
for 세 번째 부분에 이른바 증감식이라 불리는 부분이 비어 있음을 알 수 있다. 그리고 본문에 it+로 다음 포인터를 가리키도록 할 수 있다. 본래 it++를 증감식 부분에 넣어도 상관없지만, 후술한 erase ( )함수를 위해 아래 본문에서 제외시켰다. 따라서 특별한 경우가 없다면 그냥 본문에서 it++ 하는 것을 추천한다.
3. For 문을 돌다가 하나를 끄고 계속 도는 이유는 다양하지만 돌면서 원하는 것을 지우고 싶을 때도 있다. 이 경우 배열은 해당 데이터를 지우고 나머지 데이터를 앞으로 일일이 끌어오는 작업을 해야 하는데, Vector는 그럴 필요가 없다. 이하의 예를 살펴보자.1번의 경우부터 0부터 6까지의 값을 intVector에 넣어 두었다. 따라서 지금은 0123456이라는 가격이 차곡차곡 쌓여 있다. 이 중에서 만약 4라는 값을 찾으면 그것을 지우고 01, 2, 3, 5, 6으로 하려면 어떻게 해야 할까? 라는 질문에 답은 erase를 사용하세요라는 대답이다.
- it가 4일 때가 왔다. 조건문이 만족하며 erase 함수가 실행된다.
- 그렇다면 결과치는 무엇이 될까. 현재는 it는 vector로 4라고 하는 데이터를 가리키고 있다. 그러나 erase 함수가 실행되면 해당 4는 사라지고 it는 다음 값을 나타내게 된다. 즉, 이 예에서는 5를 가리키게 된다.0123456 xxx↑xx로 012356 xxx↑x
- 이렇게 바뀌게 된다. 즉, erase 역할이 해당 it을 지우고 다음에 넘겨주는 증감문 역할을 하고 있기 때문에 vector의 it을 사용할 경우에는 본문에서 it++를 쓰는 것이 코드를 작성할 때 유연하게 작성할 수 있게 된다.
- 이 코드의 결과는 무엇이 될까.일단 * it는 4이기 때문에 처음에는 4가 출력된다. 그리고 erase를 거친 it을 다시 *it로 참조하면 5가 나온다.
- 4. 마지막 코드 확인.마지막으로 itteration을 돌면 위에서 4를 지웠기 때문에 012356이라는 결과가 나오는 것을 볼 수 있다.