반응형

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

 

반응형

+ Recent posts