C++/STL 컨테이너

STL 컨테이너 - vector

coding-potato 2025. 1. 7. 18:11

vector

 C++의 표준 라이브러리(STL, Standard Template Library)에 포함된 동적 배열 컨테이너입니다. 이는 크기가 고정된 배열과는 달리, 필요에 따라 크기가 자동으로 조정되며 요소를 추가하거나 제거할 수 있습니다.

 

vector의 정의와 vector관련 함수를 사용하기 위해서는 <vector> 헤더파일을 추가해야합니다. 해당 헤더파일을 추가하면 std 네임스페이스를 통해 vector를 사용할 수 있습니다.

 

std::vector 주요 특징

  1. 동적 크기 조정
    • 초기 크기를 정하지 않거나, 정한 크기를 초과하여 요소를 추가해도 자동으로 크기를 늘려줌.
    • 크기 조정은 메모리 재할당을 통해 이루어짐.
  2. 임의 접근 (Random Access)
    • 배열처럼 인덱스를 통해 O(1) 시간 복잡도로 요소에 접근 가능.
  3. 유연한 메모리 관리
    • 필요한 만큼 메모리를 할당하고, 필요 없으면 해제함.
  4. STL 알고리즘과 호환성
    • std::sort, std::find 등 여러 STL 알고리즘에서 쉽게 사용할 수 있음.

 

사용법

  1. #include <vector>
    • std::vector를 사용하려면 반드시 헤더 파일을 포함해야 함
  2. 선언 및 초기화

 

주요 멤버 함수

함수명 설명
push_back(const T& value) 벡터의 끝에 값을 추가합니다.
pop_back() 벡터의 마지막 요소를 제거합니다.
size() 벡터에 저장된 요소의 개수를 반환합니다.
empty() 벡터가 비어 있는지 여부를 반환합니다.
resize(size_t n) 벡터의 크기를 변경합니다.
clear() 벡터의 모든 요소를 제거합니다.
at(size_t index) 주어진 인덱스의 요소를 반환합니다. (범위 체크 포함)
operator[] (인덱스 연산자) 주어진 인덱스의 요소를 반환합니다. (범위 체크 없음)
front() 벡터의 첫 번째 요소를 반환합니다.
back() 벡터의 마지막 요소를 반환합니다.
begin() 벡터의 첫 번째 요소를 가리키는 반복자를 반환합니다.
end() 벡터의 마지막 요소 뒤를 가리키는 반복자를 반환합니다.
insert(iterator pos, const T& val) 지정된 위치에 값을 삽입합니다.
erase(iterator pos) 지정된 위치의 요소를 제거합니다.
swap(std::vector& other) 두 벡터의 내용을 교환합니다.
shrink_to_fit() 용량을 실제 요소 개수에 맞게 축소합니다. (메모리 최적화)
data() 벡터의 첫 번째 요소에 대한 포인터를 반환합니다.
capacity() 벡터의 할당된 메모리 용량을 반환합니다.

결론

 std::vector는 배열보다 더 유연하고 강력한 데이터 구조로, 특히 동적 메모리가 필요한 경우 유용합니다. 이를 활용해 효율적인 C++ 코드를 작성할 수 있습니다.

'C++ > STL 컨테이너' 카테고리의 다른 글

STL 컨테이너 - queue  (0) 2025.01.07
STL 컨테이너 - stack  (0) 2025.01.07
STL 컨테이너 - list  (0) 2025.01.07
STL 컨테이너 - array  (0) 2025.01.07
STL 컨테이너 - map  (0) 2024.11.25