HW7-1: List class 만들기

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

  • 내부적으로 vector를 이용하여 데이터를 보관한다.
  • 기본 생성자로 List()를 제공하며, 아무런 초기화도 하지 않는다.
  • void add(…) 함수를 제공하며, 인자로 데이터를 넘겨주면 보관한다. (2점)
  • void display() 함수는 인자가 없이 호출되면 저장되어 있는 데이터를 저장된 순서대로 한줄씩 출력해 준다. (3점)
  • void clear() 함수는 인자 없이 호출되면 내부 데이터를 모두 지운다. (1점)
  • int size() 함수는 인자없이 호출되면 저장된 데이터 수(int)를 리턴한다. (1점)
  • bool find(…) 함수는 인자로 데이터를 넘겨주면 이미 저장된 데이터에서 같은 데이터가 존재하면 true를 아니면 false를 리턴한다. (Hint: algorithm::find 함수 활용) (3점)

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

#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("find()", students.exist( s4 ), false );
    check("find()", students.exist( s3 ), true );

    system("pause");
    return 0;
}
 
class/os2014f/hw7_tba.txt · Last modified: 2017/06/17 09:36 (external edit) · [Old revisions]
Recent changes RSS feed Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki