C++

[C++] Vector와 Array

곽가누 2024. 4. 21. 03:26

1. define 1 dementional vector 

 

method 1

vector<int> vec;

vector<[자료형]> [변수이름] 형태로 선언한다. 

 

method 2

vector<int> vec(10,8);

vector<[자료형]> [변수이름] ([원소 개수],[들어갈 원소]) 순으로 선언할 수도 있다. 

예시 코드는 8이 10개 만들어진다. 

 

method 3

vector <int> vec{10, 20, 30, 40};

특정한 자료형을 넣고 싶을땐 다음과 같이 선언할 수도 있다. 

 

2. define 2 dementional vector

method 1

vector<vector<int>> vec(2, vector<int>(3));

vector<vector<[자료형]>> [변수이름]([행 개수], vector<자료형>[열 개수]) 

예시 코드는 2행 3열짜리 벡터가 만들어진다. 

 

method 2

using Matrix = vector<vector<int>>;
Matrix vec(2, vector<int>(3));

vector을 여러개 생성해야 하면 Matrix 라는 컴포넌트를 만들어 사용할 수도 있다.

 

3. define 1 dementional array

method 1

int arr[5];

 

method 2 - dynamic allocation

cin >> n;
int *arr = new int[n];

delete [] arr;

array와 vector의 가장 큰 차이는 아무래도 함수같다.

vector는 push_back와 같은 함수가 잘 구현되어 있어 동적 할당을 자유자재로 할 수 있다.

그러나 array는 동적 할당을 하기 위해선 new를 선언해주어야 한다. 

 

4. define 2 dementional array

method 1

const int row = 3, col = 5;
using Matrix = int[row][col];
Matrix arr;

3행 5열의 array가 만들어진다. 

 

method 2 - dynamic allocation 

int n;
cin >> n;
int **arr = new int* [n];
for (int i = 0; i < n; i++){
	arr[i] = new int[n];
}

for (int i = 0; i < n; i++){
	delete [] arr[i];
}
delete [] arr;

"pointer의 pointer"을 이용해서 동적 행렬을 생성할 수도 있다.

**arr에는 n개의 포인터가 담기는 array의 주소가 생성된다. 

그리고 arr[i]에는 i번째 행의 pointer 주소가 입력이 된다.