1. 문제

 

5. 다음 함수는 매개 변수로 주어진 두 개의 int 배열을 연결한 새로운 int 배열을 동적할당 받아 리턴한다.

 

concat가 int 배열뿐 아니라 다른 타입의 배열도 처리할 수 있도록 일반화하라.

 

2. 결과

 

 

 

3. 코드

#include <iostream>
using namespace std;

template <class T>
T* concat(T a[], int sizea, T b[], int sizeb) {
	T* sum = new T[sizea + sizeb];
	int i;
	for (i = 0; i<sizea; i++)
		sum[i] = a[i];
	for (i = sizea; i<sizea + sizeb; i++)
		sum[i] = b[i - sizea];
	return sum;
}

int main() {
	int x[] = { 1, 10, 100, 5, 4 };
	int y[] = { 7, 6, 10, 9 };
	int *a = concat(x, 5, y, 4);

	for (int i = 0; i<9; i++)
		cout << a[i] << ' ';
	cout << endl;
}

 

4. 설명

 

새로운 배열 하나를 동적 생성하여서 두 배열의 원소들을 차례대로 대입합니다.

 

main의 for문에서 9처럼 일일이 숫자를 입력하고 싶지 않으시다면

 

int size = sizeof(x) / 4 + sizeof(y)/4; 를 중간에 대입 후  size까지 for문을 실행시키면 됩니다.

 

이는 물론 x와 y가 int형 배열일 경우에 해당합니다.

 

+ Recent posts