본문 바로가기
STL

벡터(Vector)

by 홍code 2022. 3. 11.

Vector는 동적 배열 구조를 구현한 것으로 맨 끝에서만 삽입 삭제가 일어나는 구조이다. 동적으로 크기가 변하고 메모리가 연속적이기 때문에 자동으로 배열의 크기를 조절할 수 있고 유연하게 객체의 추가 및 삭제가 가능하다는 일반 배열과의 차이점을 보여준다.

어떻게 사용하는가?

#include<vector> // vector를 포함하고 있는 헤더파일

vector<int>v; // vector의 크기를 정하지 않았을 경우 선언법(다른 자료형도 가능)

vector<int>v(10); // vector의 크기를 정한 경우 선언법 ex)크기 10

vector<int>v(10,1); // 크기를 10으로 정하고 데이터를 전부 1로 초기화하는 경우 선언법

v[idx]; // 벡터 v의 idx번째의 원소를 참조한다.

v.front(); // 벡터 v의 첫번째 원소를 참조한다.

v.back(); // 벡터 v의 마지막 원소를 참조한다.

v.begin(), v.end() // iterator로 접근시 vector의 맨첫번째, 맨마지막 다음 데이터의 위치를 가르킴

v.push_back(x); // 벡터 v에 x를 삽입한다.

v.pop_back(); // 벡터 v의 맨 끝 데이터를 삭제한다.

v.insert(x,y); // 벡터 v의 원하는 위치 x에 데이터 y를 삽입한다.

v.size() // 현 v의 원소 갯수를 반환

v.resize(n); // 백터 v의 현 크기를 n크기로 변경

v.resize(n,10); // 백터 v의 현 크기를 n크기로 변경후 데이터를 전부 10으로 바꿈

v.empty(); // 벡터 v가 비어있는지 확인

Pair클래스 활용

Pair클래스는 데이터를 쌍으로 저장하고자 할 때 유용한 클래스이다.

vector<pair<int, int>>v; // 두 원소타입을 int 로 지정한 벡터 v선언

v.push_back(make_pair(x,y)); // 입력법

v.push_back({x,y}); // 입력법2

v[i].first // i번째 원소의 첫번째 인자 접근

v[i].second // i번째 원소의 두번째 인자 접근

Tuple클래스 활용

Tuple 클래스는 데이터를 세 개의 쌍으로 저장하고자 할 때 유용한 클래스이다. (pair를 이중으로 써도 된다. ex) pair<pair<int, int>, int>>p; )

#include<tuple>; // tuple이 포함된 헤더 파일

vector<tuple<int, int, int>>v; // 선언법

v.push_back(make_tuple(10, 20, 20)); // 입력법

v.push_back({10,20,20}); // 입력법2

get<0>(v[i]); // i번째 원소의 첫번째 인자 접근

get<1>(v[i]); // i번째 원소의 두번째 인자 접근

'STL' 카테고리의 다른 글

그래프(Graph)  (0) 2022.03.11
덱(Deque)  (0) 2022.03.11
큐(Queue)  (0) 2022.03.11
스택(Stack)  (0) 2022.03.11

댓글