5월 13일

11852 단어 cppTILTIL

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

좋은 웹페이지 즐겨찾기