배열, vector 초기화

Jin Hur·2021년 9월 18일

알고리즘(Algorithm)

목록 보기
5/49

1차원 배열

int main() {
	int arr[3];

	for (int i = 0; i < 3; i++) {
		cout << arr[i] << ' ';
	}
	cout << '\n';
}

-858993460 -858993460 -858993460

fill_n 함수 이용 : sizeof(arr)/sizeof(arr[0])

int main() {
	int arr[3];

	fill_n(arr, sizeof(arr)/sizeof(arr[0]), -1);	// fill_n(배열명, 갯수, 초기화할 수)

	for (int i = 0; i < 3; i++) {
		cout << arr[i] << ' ';
	}
	cout << '\n';
}

-1 -1 -1

memset 함수 이용 : sizeof(arr)

int main() {
	int arr[3];

	memset(arr, -1, sizeof(arr));	// memset(배열명, 초기화할 수, sizeof(arr))
    
	for (int i = 0; i < 3; i++) {
		cout << arr[i] << '\n';
	}
	cout << '\n';
}

-1 -1 -1

이차원 배열

fill_n

int main() {
	int arr[3];
	int arr2[3][3];
	
    	// 행의 갯수
	for (int i = 0; i < sizeof(arr2)/sizeof(arr2[0]); i++) {
		// 해당 행의 열들 초기화
      		fill_n(arr2[i], sizeof(arr2[i]) / sizeof(arr2[i][0]), -1);
	}
	
    	// 행의 갯수
	for (int i = 0; i < sizeof(arr2) / sizeof(arr2[0]); i++) {
		// 열의 갯수
       		for (int j = 0; j < sizeof(arr2[i]) / sizeof(arr2[i][0]); j++)
			cout << arr2[i][j] << ' ';

		cout << '\n';
	}
	
	
}

-1 - 1 -1
-1 -1 -1
-1 -1 -1

memset : 일차원 배열과 사용법 동일

int main() {
	int arr[3];
	int arr2[3][3];

	memset(arr2, -1, sizeof(arr2));

	for (int i = 0; i < sizeof(arr2) / sizeof(arr2[0]); i++) {
		for (int j = 0; j < sizeof(arr2[i]) / sizeof(arr2[i][0]); j++)
			cout << arr2[i][j] << ' ';

		cout << '\n';
	}
}

-1 -1 -1
-1 -1 -1
-1 -1 -1



vector

vector<int> vec = {-1, -1, -1};

int main() {
	
	vector<int> vec = { -1, -1, -1 };

	vector<int>::iterator iter;
	for (iter = vec.begin(); iter != vec.end(); iter++) {
		cout << *iter << ' ';
	}
	cout << '\n';
	
}

-1 -1 -1
size of vec: 3

vector<int> vec(3);

지역으로 선언되더라도 요소들이 자동 0으로 초기화

int main() {
	
	vector<int> vec(3);

	vector<int>::iterator iter;
	for (iter = vec.begin(); iter != vec.end(); iter++) {
		cout << *iter << ' ';
	}
	cout << '\n';
	cout << "size of vec: " << vec.size() << '\n';
}

0 0 0
size of vec: 3

vector<int> vec(3, -1);

-1 -1 -1
size of vec: 3

fill 이용

int main() {
	
	vector<int> vec(3);
	fill(vec.begin(), vec.end(), -1);

	vector<int>::iterator iter;
	for (iter = vec.begin(); iter != vec.end(); iter++) {
		cout << *iter << ' ';
	}
	cout << '\n';
	cout << "size of vec: " << vec.size() << '\n';
}

-1 -1 -1
size of vec: 3

이미 있는 벡터로 초기화

값 복사 활용

int main() {
	
	vector<int> vec1(3, -1);
	vector<int> vec2 = vec1;	// 값을 복사한다. 주소를 전달하지 않는다. 

	vec2.push_back(4);

	for (int i = 0; i < vec1.size(); i++) {
		cout << vec1[i] << ' ';
	}
	cout << '\n';

	for (int i = 0; i < vec2.size(); i++) {
		cout << vec2[i] << ' ';
	}
	cout << '\n';
}

-1 -1 -1
-1 -1 -1 4


다차원 vector

vector<vector<int>> vec(3, vector<int>(3));

=> 마찬가지로 0으로 자동 초기화

int main() {
	
	vector<vector<int>> vec(3, vector<int>(3));

	for (int i = 0; i < vec.size(); i++) {
		for (int j = 0; j < vec[i].size(); j++) {
			cout << vec[i][j] << ' ';
		}
		cout << '\n';
	}


}

0 0 0
0 0 0
0 0 0

vector<vector<int>> vec(3, vector<int>(3, -1));

-1 -1 -1
-1 -1 -1
-1 -1 -1

0개의 댓글