/*아직 미완성된 글이므로 부족한 점이 많을 수 있습니다.*/
- 벡터(vector)는 C++ STL에서 가장 많이 사용되는 컨테이너 중 하나입니다. 벡터는 선형 동적 배열로서, 메모리에서 연이어서 원소들이 배치되고, 자동적으로 메모리 공간을 할당하는 것이 가장 큰 특징입니다.
- 벡터는 원소들의 삽입과 삭제가 자유로운 편이긴 하나, 그 빈도수가 높아질 수록 비효율적이기 때문에 주로 원소들을 저장은 하되 수정이나 삭제는 잘 하지 않는 경우에 사용합니다.
- 벡터 컨테이너를 사용하기 위해서는 아래와 같이 <vector> 헤더를 포함해야 하고, 선언할 때는 컨테이너에 들어갈 원소의 타입을 명시해주어야 합니다.
#include <vector>
std::vector<type> v; // std namespace 사용 시 std 생략가능
- 기존에 사용하던 배열처럼 생성할 때 크기를 지정해주거나 특정 원소 값으로 초기화시켜서 사용할 수도 있습니다.
vector<int> v1(10); // 크기가 10인 벡터 v1 선언(기본값은 0으로 초기화)
vector<int> v2(10, -1); // 크기가 10이고, -1로 초기화된 벡터 v2 선언
<벡터의 멤버 함수>
1) 삽입과 삭제
v.push_back(원소); |
$\to$ 벡터의 맨 뒷부분에 벡터의 타입에 맞는 원소를 삽입합니다.
v.pop_back(); |
$\to$ 벡터의 맨 뒷부분에 있는 원소를 삭제합니다.
v.clear(); |
$\to$ 벡터의 모든 원소를 삭제합니다.
2) 원소 참조
v[index]; |
$\to$ 벡터의 index번째 원소를 참조하여 리턴합니다. 아래에서 소개할 at()보다는 속도면에서 빠르지만, 벡터의 범위를 확인하지 않는다는 문제점이 있습니다.
v.at(index); |
$\to$ 벡터의 index번째 원소를 참조하여 리턴합니다. 벡터를 범위를 확인하므로 조금 느리지만 안전합니다.
v.front(); v.back(); |
$\to$ v.front()는 벡터의 첫 번째 원소를 참조하여 리턴하고, v.back()은 벡터의 맨 뒷부분에 있는 원소를 참조하여 리턴합니다.
v.begin(); v.end(); |
$\to$ v.begin()은 벡터의 첫 번째 원소의 위치를, v.end()는 벡터의 마지막 원소의 위치 +1 을 가리킵니다. 이 두 함수의 경우 반복자와 같이 사용됩니다.
3) 사이즈 관련
v.size(); |
$\to$ 벡터에 저장된 원소의 개수를 리턴합니다.
v.empty(); |
$\to$ 벡터가 비었는 지의 여부를 확인합니다. 비어있으면 1, 그렇지 않으면 0을 리턴합니다.
v.resize(N); v.resize(N, element); |
$\to$ 벡터를 원래의 크기에서 N의 크기로 변경합니다. 만약 크기가 더 커질 경우 원소들이 0으로 초기화되며, 원하는 값으로 초기화시키고 싶은 경우 두 번째 경우처럼 초기화하고 싶은 값을 지정해주면 됩니다.
v.capacity(); |
$\to$ 벡터에 할당된 공간을 돌려줍니다. 원소의 개수와는 다른 개념인데, 기회가 되면 따로 다루도록 하겠습니다.
'프로그래밍 언어 > C++ STL' 카테고리의 다른 글
C++ STL queue (0) | 2023.02.21 |
---|---|
C++ STL stack (0) | 2023.01.24 |
C++ STL map (0) | 2023.01.04 |
C++ STL set (1) | 2022.12.27 |
C++ STL 개요 (0) | 2022.11.25 |
댓글