728x90
벡터를 애용하자
2차원 vector 선언
vector<vector<int>> v2; //2차원벡터 선언
vector<int> v1 //1차원 벡터 선언
v1.push_back(2);
v1.push_back(20);
v1.push_back(337);
//v2[0][0] == 2, v2[0][1] == 20, v2[0][2] == 337
v2.push_back(v1);
2차원 vector 초기화
//5x10 0으로 초기화시키기 (10열의 각 원소가 0인 배열을 5줄(행) 만든다.)
vector<vector<int>> v(5, vector<int>(10,0));
//5x5 순환 접근 2차원 배열과 똑같다.
for(int i=0; i<5;++i) //행 크기
for(int j=0; j<5;++j) //열 크기
int val = v[i][j]
//5x2 0으로 초기화시키기 (2열의 각 원소가 0인 배열을 5줄(행) 만든다.)
vector<vector<int>> v2(5, vector<int>(2,0));
VS C 스타일의 동적 배열
2차원 동적 배열 할당
char** allocMat(size_t row, size_t col) {
//x , y 는 각각 행과 열을 뜻한다.
//행 할당
char** arr = new char* [row];
//각 행에 열의 갯수만큼 할당
for (int i = 0; i < row; ++i)
arr[i] = new char[col];
return arr;
}
2차원 동적 배열 해제
void releaseMat(char** arr, int row) {
for (int i = 0; i < row; ++i)
{
delete[] arr[i]; //i(행)번째 하위 배열을 해제한다.
}
delete[] arr; //첫 번째 배열을 해제
arr = nullptr;
}
-> C 스타일의 동적 배열은, 할당과 해제 구현의 번거로움도 있지만,
벡터를 사용하게 되면 사용 편의성과 메모리 컨트롤시 실수 하는 위험을 줄여준다.
300x250
'Programing_Language > C++' 카테고리의 다른 글
템플릿(Template) (2/2) (템플릿 특수화) (0) | 2020.12.14 |
---|---|
템플릿(Template) (1/2) (0) | 2020.12.13 |
enum과 enum class (열거 타입과 엄격한 열거 타입) (0) | 2020.12.06 |
VisualStudio 내부 스택 크기 조절방법 (0) | 2019.04.06 |
[MFC] 문자열 변환 매크로 및 사용 주의사항 (0) | 2019.04.06 |
댓글