C++/뇌를 자극하는 C++ STL

뇌를 자극하는 C++ STL 이것만은 알고 갑시다 4장

꾸준함. 2017. 12. 29. 01:01

[1번]

/*

다음은 배열의 원소를 복사하는 함수 템플릿 Copy()의 호출 코드입니다.

함수 템플릿 Copy()를 작성하세요

*/

#include <iostream>

using namespace std;

 

struct MyType

{

        int x, y; //좌표

};

 

ostream &operator<<(ostream &os, MyType &m)

{

        os << "(" << m.x << ", " << m.y << ")" << " ";

        return os;

}

 

template <typename T>

void Copy(T *a2, T *a1, int size)

{

        for (int i = 0; i < size; i++)

               a2[i] = a1[i];

}

 

int main(void)

{

        int arr1[5] = { 10, 20, 30, 40, 50 };

        int arr2[5];

        //Copy(t, s, n) t:목적지 주소, s:소스 주소, n:원소 개수

        Copy(arr2, arr1, 5);

        for (int i = 0; i < 5; i++) //확인용

               cout << arr2[i] << " ";

        cout << endl;

 

        MyType myArr1[5] = { {0, 0}, {1, 1}, {2, 2}, {3, 3}, {4, 4} };

        MyType myArr2[5];

        Copy(myArr2, myArr1, 5);

        for (int i = 0; i < 5; i++) //확인용

               cout << myArr2[i] << " ";

        cout << endl;

 

        return 0;

}


[2번]

/*

다음은 Push(), Pop(), Empty() 인터페이스를 갖는 Stack 객체의 사용 코드입니다.

최소한의 Stack 클래스를 작성하세요

*/

#include <iostream>

using namespace std;

 

template <typename T>

class Stack

{

private:

        T *arr;

        int top;

        int size;

public:

        Stack(int s = 10) :size(s), top(-1)

        {

               arr = new T[size];

        }

        void Push(T data)

        {

               arr[++top] = data;

        }

        bool Empty()

        {

               return top == -1;

        }

        T Pop()

        {

               return arr[top--];

        }

};

 

int main(void)

{

        Stack<int> st;

 

        st.Push(10);

        st.Push(20);

        st.Push(30);

 

        if (!st.Empty())

               cout << st.Pop() << endl;

        if (!st.Empty())

               cout << st.Pop() << endl;

        if (!st.Empty())

               cout << st.Pop() << endl;

        return 0;

}

[3번]

/*

다음은 Push(), Pop(), Empty() 인터페이스를 갖는 Queue 객체의 사용 코드입니다.

최소한의 Queue 클래스를 작성하세요

*/

#include <iostream>

using namespace std;

 

template <typename T>

class Queue

{

private:

        T *arr;

        int front, rear;

        int size;

public:

        Queue(int s = 10) :front(0), rear(0), size(s)

        {

               arr = new T[size];

        }

        void Push(T data)

        {

               arr[rear++] = data;

        }

        bool Empty()

        {

               return (front == rear);

        }

        T Pop()

        {

               return arr[front++];

        }

};

 

int main(void)

{

        Queue<int> q;

 

        q.Push(10);

        q.Push(20);

        q.Push(30);

 

        if (!q.Empty())

               cout << q.Pop() << endl;

        if (!q.Empty())

               cout << q.Pop() << endl;

        if (!q.Empty())

               cout << q.Pop() << endl;

        return 0;

}


개발환경:Visual Studio 2017


지적, 조언, 질문 환영입니다! 댓글 남겨주세요~


[참고] 뇌를 자극하는 C++ STL

반응형