C++

[C++] Vector 사용법

transfer_kk 2023. 3. 27. 11:48

vector란?
=> 자동으로 메모리가 할당되는 배열 (크기가 자동으로 늘어난다.)

=> STL이라 template를 사용하여 사용하고 싶은 데이터 타입으로 넣을 수 있다.

=> 맨 뒤쪽에서 삽입과 삭제가 가능하다.

=> 기존의 배열과 같은 특징을 가지면서 배열의 단점을 보완한 동적배열의 형태!

=> 맨 마지막 위치에 데이터를 삽입/삭제하는 것은 문제가 없지만, 중간 데이터의 삽입/삭제는 배열과 같은 매커니즘 ( i번째에 원소를 삽입하기 위해 i번째부터 마지막 원소까지의 인덱스를 +1해주는 방 )

 

vector 사용법 

=> vector<데이터타입> 변수이름(벡터의 크기, 초기화 할 값) 

=> <vector> 헤더파일을 추가하여 사용한다.

=> vector <데이터타입> 변수이름 의 형태로 vector를 선언할 수 있다.

- vector<int> v;

=> 비어있는 벡터 생성

-vector<int> v(5);

=> 기본값 (0)으로 초기화된 5개의 원소를 가지는 벡터 생성

-vector<int> v(5,2);

=> 2로 초기화 된 5개의 원소를 가지는 벡터 생성

-vector<int> v2(v1)

=> v1을 복사한 v2 생성

=> 연산자 : "==", "!=", "<", ">", "<=", ">=" 로 대소비교 가 가능하다.

 

vector의 멤버 함수- v.assign(5,2);=> 2의 값으로 5개의 원소 할당- v.at(index);=> idx번째 원소를 참조=> v[index] 도 같은 역할을 하지만 v.at(index)는 범위를 점검하는 대신, 속도가 v[index] 보다 느리다.- v.front();=> 첫 번째 원소 참조

- v.back();

=> 마지막 원소 참조

- v.clear();
=>모든 원소 제거
=> 원소만 제거하고 메모리는 남아있습니다.
=> size만 줄어들고 capacity는 그대로 남아있습니다.

-v.empty();

=> 비어있다면 true를, 아니면 false를 리턴한다.
- v.push_back(7);
-=>마지막 원소 뒤에 원소 7을 삽입
- v.pop_back();
=> 마지막 원소를 제거 (제거한 값을 return하지 않음)

- v.erase(index);

=> 인덱스 i에 있는 element 제거

=> 삭제시 (i+1) 부터 있는 element들을 한 칸씩 이동한다.


- v.begin();
=> 첫번째 원소를 가리킵니다. (iterator와 사용)

=> for문 같은 것으로 vector의 원소를 순회할 때 사용합니다.
- v.end();
=> 마지막의 "다음"을 가리킵니다 (iterator와 사용)
- v.rbegin();
=> reverse begin을 가리킨다 (거꾸로 해서 첫번째 원소를 가리킵니다)
=> iterator와 사용.
- v.rend();
=> reverse end 을 가리킨다 (거꾸로 해서 마지막의 다음을 가리킵니다)
=> iterator와 사용.

=> v.end()가 마지막의 "다음"을 가리키는 것 처럼 v.rend()도 처음의 "이전"을 가리킨다.
- v.reserve(n);
=> n개의 원소를 저장할 위치를 예약합니다(미리 동적할당 해놉니다)
- v.resize(n);
=> 크기를 n으로 변경한다.
=> 더 커졌을 경우 default값인 0으로 초기화 한다.

- v.resize(n,3);
=> 크기를 n으로 변경한다.
=> 더 커졌을 경우 인자의 값을 3으로 초기화한다.

 

보고 공부한 블로그

: https://velog.io/@msung99/vector