Coding/Basic Concept (C++)

Vector & Array

빈그레 2023. 2. 19. 22:32

 

 


Vector & Array

 

 

 

 

vector (class)

vector를 생성하면 메모리 heap에 생성되며 동적할당된다.

array와의 가장 큰 차이점은 array는 크기가 컴파일할 때 결정되므로

후에 원소를 추가하거나 삭제하는 것이 불가능하며 무조건 스택 메모리를 사용해야하지만,

vector는 크기가 동적으로 변한다. 가변 크기의 데이터 컨데이너가 바로 vector이다.

vector는 메모리를 재할당하는 데 용이하지만, 포인터를 통한 접근이기 때문에 속도가 느리다.

 

 

 

vector를 사용해야할 case

 

- 저장할 데이터의 개수가 정해지지 않은 경우(가변의 경우)

- 데이터 접근의 랜덤 엑세스가 필요한 경우

- 중간에 데이터 삽입이나 삭제가 일어나지 않는 경우

  배열 기반 컨테이너이기 때문에 push_front(), pop_front()는 지원하지 않는다.

  

 

vector 초기화

 

vector <자료형> 변수명

: 변수를 생성

 

vector <자료형> 변수명 (숫자)

: 숫자만큼 벡터 생성 후 0으로 초기화

 

vector <자료형> 변수명 = { 변수1, 변수2, 변수3,,,}

: { ... } 괄호 안 변수값들로 벡터 초기화

 

vector <자료형> 변수명 [ ] = { , }

: 벡터 배열(2차원 벡터) 선언 및 초기화(열은 고정, 행은 가변)

 

vector < vector <자료형> > 변수명

: 2차원 벡터 생성 (열과 행 모두 가변) 

 

vector <자료형> 변수명.assign( 범위, 초기화 값 )

:  벡터의 범위 내에서 해당 값으로 초기화

 

 

vector Iterators

 

v.begin() 벡터 시작점의 주소 값 반환
v.end() 벡터 (끝부분 + 1 )의 주소값 반환
v.rbegin()  (revers begin)  벡터의 끝 지점을 시작점으로 반환
v.rend()  (revers end) 벡터의 (시작+1) 지점을 끝 부분으로 반

 

 

 

 

vector 사용 예시
int main() {
	//크기가 0인 벡터
	vector<int> v1;

	//초기값 설정으로 크기가 정해진 벡터
	vector<int> v2 = { 1,2,3,4,5 };

	//크기가 정해진 벡터
	vector<int> v3(10);

	//크기와 초기화값이 정해진 벡터
	vector<int> v4(10, 1);
	
	//vetor 값 출력하기
	cout << v2.at(0);
	cout << v2[0];


	return 0;
}

 

'Coding > Basic Concept (C++)' 카테고리의 다른 글

Template / Function template / Class template  (0) 2024.02.05