[C++] Vector 사용법
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으로 초기화한다.
보고 공부한 블로그