ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 명품 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

    댓글

© 2018 TISTORY. All rights reserved.