5월 13일
2차원 배열 초기화
모든 요소 '0'으로 초기화
2차원 배열의 경우
2차원 배열 ex)int arr[r][c]
의 경우 다음과 같이 초기화 가능
int arr[r][c] = {0, }
int main()
{
int arr[5][6] = {0, }; // 2차원 배열의 요소를 모두 0으로 초기화
return 0;
}
혹은 <string.h>
의 memset을 사용, 2차원 배열의 크기가
- 세로 :
int row = sizeof(arr) / sizeof(arr[0])
- 가로 :
int col = sizeof(arr[0]) / sizeof(int)
인것을 활용하여 다음과 같이 표현 가능
memset(arr[r],0,sizeof(arr[r]))
#include <string.h>
using namespace std;
int main(){
int arr[5][6];
int size = sizeof(arr) / sizeof(arr[0]); //2차원 배열의 세로 크기
//배열이 차지하는 전체 공간을 가로 한 줄의 크기로 나눠줌
for(int i=0; i<size; i++)
memset(arr[i],0,sizeof(arr[i]));
return 0;
}
2차원 벡터의 경우
vector<vector<int>> v(r,vector<int>(c));
#include <vector>
using namespace std;
int main() {
vector<vector<int>> v(5,vector<int>(6));
return 0;
}
0이외의 값으로 초기화
2차원 배열의 경우
<algorithm>
의 fill을 사용, 다음과 같이 표현 가능
fill(시작위치,끝나는위치+1,초기화 값);
#include <algorithm>
using namespace std;
int main() {
int arr[5][6];
fill(&arr[0][0], &arr[4][6], 8) // 2차원 배열 경우
return 0;
}
2차원 벡터의 경우
vector<vector<int>> v(r,vector<int>(c,n));
#include <vector>
using namespace std;
int main() {
vector<vector<int>> v(5,vector<int>(6,7)); // 5X6 전부 7로 체움
return 0;
}
**번외
2차원 벡터 역시 fill 사용가능. 초기화시 바로 원하는 값으로 채워 넣을 수 있지만, 나중에 바꾸게 되는 경우 등에 사용
#include <vector>
#include <algorithm>
using namespace std;
int main() {
vector<vector<int>> v(5,vector<int>(6));
fill(v.begin(), v.end(), vector<int>(6,7)); // 5X6 전부 7로 체워짐
return 0;
}
Author And Source
이 문제에 관하여(5월 13일), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zabaniya09/5월-13일저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)