HW7-1: List class 만들기

List클래스는 한가지 타입의 데이터 여러개를 보관해 준다. List가 저장할 수 있는 데이터 타입은 템플릿을 이용해서 어떤 데이터 타입도 보관이 가능하다. 구체적으로 다음과 같은 기능을 제공한다.

테스트 코드는 다음과 같다.

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>

using namespace std;

#define check( s, a, b ) { \
if( (a) != (b) ) { \
cout << "## FAIL (" << (s) << "): " << (a) << " != " << (b) << endl; \
} \
else { \
cout << "## PASS (" << (s) << "): " <<  (a) << endl; \
} \
}

class Student {
    string name;
    int score;
public:
    Student(string n, int s) : name(n), score(s) {};
    bool operator==(const Student &s) { return name==s.name && score==s.score; }
};

//***********
// 여기에 자신의 코드를 넣는다
// 이부분 외에는 수정하지 말 것
//***********

int main()
{
    List<string> grocery;
    grocery.add("milk");
    grocery.add("eggs");
    grocery.add("bread");
    check("add()/size()", grocery.size(), 3 );
    grocery.display(); // 각 줄에 milk, eggs, bread가 출력됨 (세줄)
    grocery.clear();
    check("clear()", grocery.size(), 0 );
    
    List<Student> students;
    Student s1("Shin", 88);
    Student s2("Kim", 72);
    Student s3("Cho", 91);
    
    students.add( s1 );
    students.add( s2 );
    students.add( s3 );

    Student s4("Shin", 90);
    
    check("exist()", students.exist( s4 ), false );
    check("exist()", students.exist( s3 ), true );

    system("pause");
    return 0;
}