** 자기 공부용 및 암기용으로 포스팅하는 글 입니다.
** 정확한 정보는 보장 할 수 없으니, 참고용으로만 봐주시면 감사하겠습니다.
** 제 개인적인 생각 및 자기 암시목적으로 작성되기에 이점 양해 부탁드립니다.
★ 알아볼 내용
1. vector란?
2. array하고의 차이는?
3. vector에서의 값 대입/삭제 및 출력.
4. 그 외 기타 관련 함수.
1. Vector란?
백준 알고리즘을 풀다 보면 vector라는 것을 자주 사용하게 됩니다.
Vector란 동적배열을 나타내는 표준 라이브러리 컨테이너입니다.
<vector> 헤더파일을 먼저 include해야 사용할 수 있습니다.
2. array와 vector의 차이는?
C에서 사용하는 array와 C++에서 사용하는 vector의 차이를 알아보겠습니다.
두가지 모두 데이터를 같은 컨테이너 형식이지만, Array는 정적배열, Vector는 동적배열이라는 차이를 가지고 있습니다.
이 외의 차이점은 아래 표와 같습니다.
특징 | Array | Vector |
크기 조절 | 정적 | 동적 |
메모리 관리 | 사용자가 직접 관리 | 자동으로 메모리 할당/해제 가능 |
메모리 위치 | 스택에 할당 | 힙에 할당 |
요소 접근 | 배열의 인덱스 사용 가능 | 인덱스 및 반복자 사용 가능 |
라이브러리 헤더 | <array> | <vector> |
기타 | 동적 크기 조절과 관련된 여러 함수/기능 제공 |
3. vector에서의 값 대입/삭제 및 출력
- 1) 백터에 요소 추가하기 : push_back()
#include <vector>
int main()
{
std::vector<int> vec;
//push_back을 통한 요소 추가
vec.push_back(10);
vec.push_back(20);
...
}
- 2) 벡터에 요소 삭제 하기 : earse()
#include <vector>
int main()
{
std::vector<int> vec;
//push_back을 통한 요소 추가
vec.push_back(10);
vec.push_back(20);
vec.push_back(30);
//erase를 통한 요소 삭제
vec.erase(vec.begin()+1)
...
}
위 식을 통해 vec에는 요소 10과 20이 들어가고 시작점(0)기준+1의 값을 지우는 것이니 요소 20이 지워지게 됩니다.
또한 삭제 되고 나서 나머지 요소들은 한칸씩 당겨지게 됩니다. 즉 {10, 30}이 됩니다.
- 3) 벡터 요소 출력 하기
요소 출력은 두 가지의 방법이 있습니다. 반복자를 사용하거나, 직접 지목하여 출력하거나.
//반복자 it 사용
for (auto it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << " ";
}
//직접 지목하여 출력
for(int i = 0; i < vec.size(); i++){
std::cout << vec[i] << " ";
}
4. 그 외 기타 관련 함수.
- 1) 벡터의 시작점 : vec.begin()
벡터의 첫번 째 요소의 값을 접근할 수 있다.
- 2) 벡터의 끝 점 : vec.end()
벡터의 마지막 요소의 다음 위치로 접근한다. 즉 마지막 요소를 선택하고자 한다면 vec.end()-1을 해야 한다.
- 3) 벡터의 크기 : vec.size()
요소들을 추가하다 보니 벡터의 사이즈를 알고 싶거나, 벡터 전체의 값을 search하기 위해 for문을 돌리고자 할 때 사용된다.