STL Vector

Lellow_Mellow·2022년 8월 31일
0
post-thumbnail

Vector

vector는 C++ 표준 라이브러리 (STL : Standard Template Library) 에 있는 컨테이너 중 하나다.

동적 배열 구조를 C++로 구현한 것으로, 일반 배열과 다르게 동적이며, 메모리가 연속적이다. 속도 측면에서는 배열에 비해 떨어지지만, 메모리를 효율적으로 관리할 수 있다는 장점이 존재한다.

주로 맨 끝에서 삽입 및 삭제가 일어나는 구조지만, iterator(반복자)를 이용하여 유연한 추가 및 삭제가 가능하다.

하지만 중간에서 삽입과 삭제가 많은 경우에는 비효율적이니, 이러한 경우에는 list를 이용하도록 하자. 또한 index를 통하여 바로 접근은 가능하나 탐색에 있어서는 순차적으로 접근해야 하므로 탐색이 잦은 경우에도 vector사용을 지양하는 것이 좋다.

Vector의 사용법

vector 선언 및 초기화

vector를 사용하기 위해서는 아래와 같이 header 파일을 include 해준다.

#include <vector>

기본적인 vector의 선언 및 초기화는 아래와 같다.

// 기본적인 vector 선언
// vector<자료형> 변수이름;
vector<int> v1;
vector<string> v2;

// 아래와 같이 vector의 크기를 미리 정할 수 있음.
// vector<자료형> 변수이름(크기);
vector<int> v3(10);

// 크기를 지정함과 동시에 특정 값으로 초기화가 가능.
// vector<자료형> 변수이름(크기, 초기화값);
vector<int> v4(10, 1);

// 크기를 지정하지 않고 특정 값을 넣어 초기화
vector<int> v5 = {1, 2, 3, 4, 5};

// 2차원 vector
vector<vector<int>> v6;

// 다른 vector를 복사해 vector 생성
vector<int> v7(v1);
vector<int> v7 = v1;

vector 값 추가 (삽입)

vector는 가장 뒤에 값을 삽입하거나, iterator를 이용하여 특정 위치에 값 삽입이 가능하다.

// 가장 뒤에 값 삽입
v.push_back(1);

// iterator 선언 + 초기화
vector<int>::iterator iter = v.begin();

// iterator를 활용해 가장 앞에 값 삽입
iter = v.insert(iter, 1);

// iterator를 활용해 앞에 1을 5개 삽입
iter = v.insert(iter, 5, 1);

vector 값 삭제

가장 끝 값을 간단히 삭제할 수 있으며, iterator를 활용하여 중간에 있는 값을 삭제할 수 있다.

// 가장 끝 값을 삭제
v.pop_back();

// 앞에서 5번째 값을 제거
v.erase(v.begin() + 5);

// index 0부터 3까지의 값을 제거
v.erase(v.begin(), v.begin() + 3);

// vector 전체 삭제
v.clear();

vector 크기 구하기

vector의 크기는 원소의 개수, 물리적 크기로 크게 2가지로 나눌 수 있다. 이에 대한 method는 아래와 같다.

// vector의 원소의 개수
v.size();

// vector의 물리적 크기
v.capacity;

// vector가 비어있는지 확인, 비어있으면 True, 아니면 False
v.empty();

vector 원소 접근

vectorindex를 활용하여 간단하게 접근이 가능하며, 첫번째 원소와 마지막 원소를 간단하게 참조할 수 있다.

// 배열과 동일한 방식으로 접근
v[10];

// at method를 활용한 접근
v.at(10);

// 처음 원소와 마지막 원소를 참조
v.front();
v.back();
profile
잔잔한 물결에서 파도로, 도약을 위한 도전. 함께하는 성장

0개의 댓글