챕터1 - General Rules

  • unprotected header는 0점.
  • header 파일 안에 함수가 있어도 0점.
  • c++ 과제임. 따라서:
    • *alloc, *printf, free 사용이 금지됨
    • stdlib 안에 있는 것 사용 가능하지만 c++스럽게 코딩해라
    • STL 라이브러리를 recode 하는 것이 목표이기 때문에 당연히 container 그 자체를 사용하는 건 안 됨.
  • using namespace, friend 는 금지됨. 쓰면 -42점.
  •  
  • You must read the examples thoroughly. They can contain requirements that are not obvious in the exercise’s description. If something seems ambiguous, you don’t understand C++ enough.
  • 외부 라이브러리 사용 금지. c++11 버전 파생 라이브러리나 Boost 사용 금지.
    (주. #include <bits/stdc++.h> 는 클러스터 맥에 깔린 c++ 버전이 12라 지원을 안 함.)
  • 많은 양의 클래스를 제출해야 할 수도 있음. 그래서 짜증날 수도 있다. 니가 좋아하는 에디터를 쓰는 게 아니라면.
  • 시작하기에 앞서 프로젝트를 완벽히 숙지할 것.
  • clang++ 로 컴파일 할 것.
  • -Wall -Werror -Wextra 사용.
  • Each of your includes must be able to be included independently from others. Includes must contains every other includes they are depending on, obviously.
  • 정해진 코딩 스타일은 없다. 알아볼 수 없을 정도만 아니면 됨.
  • 여기서부터 중요 : program에 의해 평가받는 것 아님. 그렇기 때문에 테스트케이스 선택은 자율적으로 하시길. 다만 충분히 많은 양의 테스트 해보는 것을 권함.
  • 파일의 개수는 중요하지 않음.
  • 서브젝트는 짧아도 이 과제를 확실히 하는 것이 당신에게 큰 도움이 될 것이다.
  • 오딘의 힘으로, 토르의 힘으로! Use your brain!!!



챕터 2 - 목표

이번 프로젝트에서 당신은 c++ standard template library container type들을 구현할 것이다.

각각의 컨테이너들은 적절한 클래스파일로 제출되어야 한다.

namespace는 ft여야 한다. 테스트는 ft:<container> 과 같은 형태로 진행될 것이다.

You need to respect the structure of the reference container. If it’s missing a part of the Coplien form, do not implement it.

c++98 을 쓸 것이며, container의 새로운 feature는 구현되지 않아야 한다.

 

챕터 3 - 필수 파트

  • <container>.hpp 파일에 container를 구현해서 제출.
  • main.cpp 도 제출하여 테스트할수 있게 하라.
  • std::allocator 사용 가능. Non-member and overloads are expected.
  • 내부 데이터 구조(structure)를 합리적으로 설명해야 함. 단순한 배열을 map에 사용하는 건 not ok.
  • 컨테이너가 iterator 시스템을 가지고 있다면 그것을 구현해야 함.
  • https://www.cplusplus.com/ 을 레퍼런스로 사용하면 됨. 여기에 c++ 98 버전이 담겨 있음.
  • standard container에 들어 있는 public function 보다 더 많이 public function을 implement 하지 말 것.
  • 나머지는 전부 private이나 protected로 돌려라.
  • non-member overload에 한해 friend 사용을 허가한다. 모든 friend 사용은 합리적으로 설명할 수 있어야 한다.
  • 다음의 컨테이너를 구현하라.
    • List
    • Vector
    • Map
    • Stack
    • Queue
  • STL은 사용 금지. 그러나 STD 라이브러리는 사용 가능.

 

챕터 4 - 보너스

필수 파트를 모두 끝냈다면 다음의 컨테이너도 작성해보자.

  • Deque
  • Set
  • Multiset
  • Multimap

# 컨테이너 과제 해석

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기
// custom