알고리즘/기타 개념

[C++] 배열 초기화 방법 - array, vector

천니 2021. 8. 23. 11:19
728x90

예를 들어, int arr[10]과 같은 배열을 초기화 하고 싶을 때를 생각하자


array의 초기화법

  • 간단한 초기화 방법
int arr[10]={0,1,2,3,4,5,6,7,8,9};
  • 배열을 전부 0으로 초기화 하고 싶을 때
int arr[10]={0};
  • 0이 아닌 다른 값으로 초기화 하고 싶을 때
for(int i=0;i<10;i++)
	arr[i]=n;
fill_n(arr,10,3);
fill(arr,arr+10,3);
  • arr[0]만 1이고 나머지는 0으로 초기화
int arr[10]={1};
  • memset을 이용한 초기화 방법

memset의 기본함수 구조

void *memset(void *ptr,int value, size_t num);
  1. ptr : 채우고자 하는 메모리의 시작 포인터
  2. value: 메모리에 채우고자하는 값
  3. num : 채우고자하는 바이트 수, 즉 메모리의 크기
memset(arr,0,sizeof(arr));

arr 배열을 0으로 채운다!

 


vector의 배열 초기화 법

 

  • 배열과 같이 원소를 직접 할당해줄 수 있다.
vector<int> arr={1,2,3,4};
  • 기본 초기화
vector<int> arr(3);

--> 배열의 값이 0,0,0으로 초기화된다.

 

vector<int> arr(3,10);

--> 배열의 값이 10,10,10 으로 초기화 된다.

 

  • fill 함수 이용
vector<int> arr(3);
fill(arr.begin(),arr.end(),3);

--> 배열의 값이 10,10,10 으로 초기화 된다.

 

  • assign 함수 이용
vector<int> arr;
arr.assign(3,10);

--> 배열의 값이 10,10,10 으로 초기화 된다.

 


다차원 vector의 초기화

 

vector<vector<int>> arr(3, vector<int>(3,10));

--> 출력은 3X3 모두 10으로 초기화 된다.