-
명품 C++ 10장 5번C++ 2018. 11. 17. 01:10
5. 다음 함수는 매개 변수로 주어진 두 개의 int 배열을 연결한 새로운 int 배열을 동적 할당 받아 리턴한다.
int * concat(int a[],int sizea, int b[], int sizeb);concat가 int 배열뿐 아니라 다른 타입의 배열도 처리할 수 있도록 일반화하라.
소스코드
#include <iostream>using namespace std;template <class T>T * concat(T a[], int sizea, T b[], int sizeb) { // 배열 합쳐서 새로운 배열 리턴T *p = new T[sizea + sizeb];for (int i = 0; i < sizea; ++i)p[i] = a[i];for (int i = sizea; i < sizea + sizeb; ++i)p[i] = b[i - sizeb];return p;}int main() {int a[] = { 1,2,3,4,5 };int b[] = { 5,6,7,8,9 };int *p = concat(a, 5, b, 5); // 동적 생성for (int i = 0; i < 10; ++i)cout << p[i] << ' ';cout << endl;delete[] p; // 메모리 반환char c[] = { 'a','b','c','d','e' };char d[] = { 'k','i','m','n','u' };char *q = concat(c, 5, d, 5); // 동적 생성for (int i = 0; i < 10; ++i)cout << q[i] << ' ';cout << endl;delete[] q; // 메모리 반환}실행결과
제네릭 함수로 일반화 시켜주면 됩니다.
새로운 p배열을 동적 생성하여 a배열과 b배열을 합친 후, 리턴합니다.
'C++' 카테고리의 다른 글
명품 C++ 10장 7번 (0) 2018.11.17 명품 C++ 10장 6번 (0) 2018.11.17 명품 C++ 10장 4번 (0) 2018.11.16 명품 C++ 10장 3번 (0) 2018.11.16 명품 C++ 10장 2번 (0) 2018.11.16