문제 :

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

1 int * concat(int a[], int sizea, int b[], int sizeb);

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

실행 결과 :

목적 및 힌트 :

함수의 힐반화에 대한 이해, 템플릿 함수 만들기

코드 :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 #include  using namespace std; template <class T> T* concat(T a[], int sizea, T b[], int sizeb){ T *rArray = new T[sizea + sizeb]; // return 할 배열을 동적생성 for(int i=0; i<sizea+sizeb; i++){ if(i<sizea) rArray[i] = a[i]; else rArray[i] = b[i-sizea]; } return rArray; } int main() { int x[] = { 1, 10, 100, 5, 4 }; int y[] = { 7, 6, 10, 9 }; int *a = concat(x, 5, y, 4); int aSize = sizeof(x)/sizeof(x[0]) + sizeof(y)/sizeof(y[0]); // a에 들어있는 원소의 개수 for (int i = 0; i<aSize; i++) cout « a[i] « ’ ‘; }

공유하기

게시글 관리

코딩은 내일부터 ;

저작자표시 (새창열림)

💻 개발 & CS > C++ 프로그래밍’ 카테고리의 다른 글

명품 C++ programming 실습 문제 10장 7번  (1) 2020.03.09
명품 C++ programming 실습 문제 10장 6번  (1) 2020.03.09
명품 C++ programming 실습 문제 10장 4번  (1) 2020.03.09
명품 C++ programming 실습 문제 10장 3번  (1) 2020.03.09
명품 C++ programming 실습 문제 10장 2번  (1) 2020.03.09