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;
}
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;
}
<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;
}
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;
}