본문 바로가기
C++/명품 C++ Programming

[C++/명품 C++ Programming]명품 C++ 10장 연습문제 - 이론 문제

by starfish22 2022. 5. 24.
728x90

1. 3번 템플릿을 선언하기 위해 사용하는 키워드는 template이다.

 

2. 3번 템플릿을 사용하면 컴파일 오류 메시지가 빈약하여 디버깅에 많은 어려움이 있다.

 

3. 2번

 

4. 2번

 

5.

template <class T>
bool equal(T a, T b) {
    if (a == b) return true;
    else return false;
}

 

6.

template <class T>
void insert(T a, T *b, int index) {
    b[index] = a;
}

 

7.

template <class T> T max(T x, T y) {
    if (x > y) return x;
    else return y;
}

 

8.

template <class TYPE>
bool equals(TYPE x, TYPE y) {
    if (x == y) return true;
    else return false;
}

 

9.

(1)

int avg(int *p, int n) {
    int k;
    int sum = 0;
    for (k = 0; k < n; k++) sum += p[k];
    return sum / n;
}

(2)

double avg(double *p, int n) {
    int k;
    double sum = 0;
    for (k = 0; k < n; k++) sum += p[k];
    return sum / n;
}

 

10.

(1) 예

(2) 3.14

(3) special 100

 

11. 3번 템플릿 함수와 동일한 이름의 함수가 중복되어 있을 때, 중복 함수가 우선적으로 바인딩된다.

 

12.

(1)

template <class T> class Container {
    T *p;
    int size;
public:
    Container(int n);
    ~Container();
    void set(int index, T value) { p[index] = value; }
    T get(int index);
};

(2)

template <class T>
Container<T>::Container(int n) {
    p = new T[n];
    size = n;
}

(3)

template <class T>
Container<T>::~Container() {
    delete[] p;
}

(4)

template <class T>
T Container<T>::get(int index) {
    return p[index];
}

(5)

Container<char> c(26);

(6)

int main() {
    Container<char> c(26);
    for (int i = 0; i < 26; i++) {
        c.set(i, 'a' + i);
    }
    for (int i = 25; i >= 0; i--) {
        cout << c.get(i);
    }
}

 

13. 1번

 

14.

(1) #include <vector>

(2) #include <list>

(3) #include <algorithm>

(4) #include <algorithm>

 

15.

vector<double> v;
v.push_back(3.1);
v.push_back(4.1);

for (auto it = v.begin(); it != v.end(); it++)
    cout << *it << ' ';

 

16.

vector<char>::iterator it;

 

17. #include <map>

 

18.(답지 없음)

(1) vector 시간을 배열의 index로 보면 시간으로 온도를 알 수 있다.

(2) map 지역을 검색하여 시각을 알 수 있다.

728x90

댓글