ft_containers 개요

개발새발·2022년 7월 20일
0

42Cursus

목록 보기
23/29
post-thumbnail

ft_containers

본 프로젝트의 개요와 프로젝트를 진행하기 위한 개념 확립

프로젝트 소개

본 프로젝트의 목표는 다양한 C++ STL(Standard Template Library) Container 타입들을 구현하는 것이다. 각각의 컨테이너들을 reference를 참고해 <container>.hpp 형식의 파일안에 적절한 클래스들을 작성해 구현하면 된다. Reference에서 Orthodox Canonical form이 아닌 것들은 이 form대로 구현하지 않아도 된다. C++98 버전의 코드를 작성해야하므로 해당 버전이 아닌 기능들은 구현하지 않아야한다.

구현해야할 컨테이너들은 다음과 같다 :

  • vector

    • vector<bool> 은 하지 않아도 된다.
  • map

  • stack

    • 직접 만든 vector 클래스를 기본 기저 컨테이너로 사용하되, STL의 stack이 포함하는 다른 컨테이너들과도 호환되어야 한다.
  • set (Bonus Part)
    • Red-Black tree를 사용하여 구현해야 한다.

또한 다음의 기능들도 구현해야 한다 :

  • iterators_traits

  • reverse_iterator

  • enable_if

  • is_integral

    • C++11 문법이긴 하지만 C++98 방식으로 구현할 수 있다.
    • SFINAE를 발견하게 해준다.
    • SFINAE : Substitution failure is not an error
  • equal and/or lexicographical_compare

  • std::pair

  • std::make_pair

namespace는 반드시 ft여야하고, 표준 컨테이너의 모든 멤버 함수, 비멤버 함수와 오버로딩을 구현해야 한다. Iterator가 있다면 그 또한 구현해야 한다. std::allocator를 사용해야 하며, 비멤버 오버로딩의 경우, 정당한 상황에만 friend 키워드가 허용되지만, map::value_compare의 구현에서는 friend 키워드가 허용된다.

디펜스 시, 주어진 main.cpp 이상의 테스트를 제공해야 하며, STL의 컨테이너와 직접 구현한 컨테이너를 결과와 퍼포먼스 / 시간을 비교하면서 테스트를 진행해야 한다. STL의 컨테이너보다 최대 20배까지 느려도 된다.

 

References
https://cdn.intra.42.fr/pdf/pdf/49410/en.subject.pdf

profile
블록체인 개발 어때요

0개의 댓글