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 |
댓글