본문 바로가기
--------------------**/C++ 프로그래밍2

c++ vector

by kk님 2020. 2. 16.

http://www.cplusplus.com/reference/vector/vector/

vector - C++ Reference

difference_typea signed integral type, identical to: iterator_traits ::difference_type usually the same as ptrdiff_t

www.cplusplus.com

종종 코딩테스트 시험을 보면, java언어를 쓰는 대신 c/c++/python 으로 시험을 보는 곳이 있습니다.

c++에서 vector 개념은 한참 뒤에 나오기 때문에 한번 짚어보고 시험을 보는게 좋아요.

 

다음 학기에 배우는 java에서 arraylist, linkedlist를 사용할텐데 비슷한 사용법(함수로 접근)을 갖고 있습니다.

 

벡터는 배열과 상당히 비슷한 면이 많습니다.

 

배열의 특징중 하나는 배열의 크기가 정해져 있다는 문제가 있었습니다.

하지만 그 범위를 넘어서 데이터를 더 배열에 담고싶은데 그렇지 못하는 상황도 있었어요.

예를들어, 현재 배열의 크기가 10이며, 학생 10명의 성적데이터를 입력했는데 3명의 전학생이 더 들어온 경우.. 배열의 크기를 증가시킬 수 없기 때문에 난감해지는 상황이 발생합니다.

이와같은 배열의 문제를 해결하는게 '벡터'입니다.

 

벡터의 생성자(constructor)를 살펴보기로 합니다. 가장 기본적인 생성자는 다음과 같습니다.

 

vector<int> first;

vector<int> second(3);

 

둘의 차이를 알아야 합니다. first 벡터는 벡터를 생성한것 뿐이지만, second 벡터는 벡터의 크기가 3인 벡터를 생성한 것이며 동시에 0으로 초기화 한 것입니다.

단순히 크기와 초기화만 된 차이가 있는건가 싶기도 하지만,

배열과의 차이점이 또 존재합니다.

 

다음 과정을 살펴봅시다.

first[0] = 1;

second[0] = 1;

둘 중 어느것이 오류가 발생하지 않을까요?

 

더보기

second[0] = 1;만 가능합니다.

벡터는 값이 들어있는 경우에만 값을 '변경'할 수 있습니다.

second벡터는 크기가 3이고, 0으로 초기화 되었으므로 값이 들어있는 상태입니다.

vector<int> second(3);

즉, 값이 아예 들어있지 않는 경우(초기화하지 않은 경우)에는 push_back() 함수를 사용해서 값을 넣어줘야 합니다.

 

 

 

이렇게 살펴본 벡터의 생성자는 다음과 같이 여러가지가 있습니다. 참고해보세요.

 

 

 

 

벡터에서 자주 쓰이는 함수를 알아봅시다.

push_back(element);   : 벡터의 마지막에 element를 추가합니다.

pop_back();               : 벡터의 마지막 element를 삭제합니다.

size();                      : 벡터의 크기를 반환합니다.

at(index);                 : index 번째 요소를 반환합니다. 

empty();                  : 벡터가 비어있는지 bool타입으로 반환해줍니다.

clear();                    : 벡터의 모든 element를 삭제합니다.

 

 

베열에서는 지정된 배열의 크기 안에서는 쉽게 값을 넣고 변경하기가 가능하지만,

벡터는 해당 index에 요소가 들어있는 경우에만 '수정'가능합니다.

 

벡터를 알아보기 위해 cplusplus reference의 Example을 참고해보시길 바랍니다.

 

 

'--------------------** > C++ 프로그래밍2' 카테고리의 다른 글

배열과 포인터  (0) 2020.02.11
포인터  (0) 2020.02.10