반응형
1. Vector란?
Vector는 배열과 deque의 장점을 모두가지고 있는 자료구조라 생각하면 편리하다. 더욱 쉽게 생각하면
크기를 마음대로 조절이 가능한 배열 or 중간에 접근이 가능한 deque이라고 생각하고 넘어가도 충분하다.
장점 - 크기가 변경이 가능하고, 접근은 모든 원소에 대해서 가능한 자료구조이다.
단점 - 배열과 덱과 마찬가지로 중간 삽입, 삭제를 진행할경우 시간복잡도가 O(n)이 든다. (웬만하면 하지 말라는 소리다, 중간 삽입을 많이 해야하는경우 list등을 사용하자)
일반적으로 시간복잡도를 신경쓰지 않아도 되는 상황이라면, stack, queue, deque을 아예 쓰지 않고 항상 vector를 사용하는게 더 난이도가 쉽다.
2. C++에서의 Vector 사용법
기본적인 #include<iostream>, using namespace std; 정도는 되어있다고 가정함.
a. 헤더파일
b. 생성방법
vector<int> array1; int자료형의 변수값을 받을 수 있는 array1 벡터를 생성한다.
생성방식에서 볼 수 있듯, 자료형은 어떤것이든 사용가능하나, 한 vector 내에서는 동일한 자료형을 넣어야한다.
여러 자료형을 넣기를 원한다면 주소값을 넣는 방법을 사용하자.
그 외에 vector를 생성하는 방법(생성자)
vector<int> arr; | 빈 vector arr 생성 | ||
vector<int> arr(3); | 3개의 기본값(int는 0)을 가지는 vector arr생성 | ||
vector<int> arr(3,1); | 3개의 1을 가지는 vector arr생성 |
c. vector의 멤버함수
arr 벡터에 대한 멤버함수(핵심적인 것들만)
arr.assign(3,1); | 3개의 1을 arr에 할당 |
arr.front(); | 첫번째 원소 참조 |
arr.back(); | 마지막 원소 참조 |
arr.at(idx); | idx번쨰 원소 참조 (범위점검으로 안전함) |
arr[idx]; | idx번째 원소 참조(빠름) |
arr.clear(); | 모든 원소 제거 |
arr.push_back(3); | 마지막 원소 뒤에 3삽입 |
arr.pop_back(); | 마지막 원소 제거 |
arr.size(); | 원소의 갯수 반환 |
arr.insert(2,3); | 2번째 위치에 3 삽입( 시간 n만큼 걸리므로 주의) |
arr.empty(); | 비었으면 true, 아니면 false |
반응형
'알고리즘' 카테고리의 다른 글
백준 7576번 토마토 [C++] BFS/예상되는 실수/접근방식/풀이법/코드 (0) | 2022.01.31 |
---|---|
가장긴 증가하는 부분순열(LIS)(N^2) (0) | 2021.08.07 |
2차원 Vector의 정렬(C++) (0) | 2021.08.07 |
sort 사용법 (C++) (STL) (0) | 2021.08.07 |
구조체Vector 와 2차원Vector (C++) (0) | 2021.08.07 |