본문 바로가기

트레이닝/42

[STL|Container] 이 과제는 무엇인가

  • C++ STL(Standard Template Library) 중에서 Container를 C++98 version으로 구현한다.
  • STL(Standard Template Library)은 Container(자료구조), Algorithm으로 구성되어있다.
  • 98버젼인 이유는 42에서 C로 과제가 시작되고 이후에 OOP를 배우는 과제에 진입할때 이미 C에 친숙한 상태이므로 C++을 OOP 언어로 선택한 것이다
    • 구 버젼이라 실제로 출시할 제품으로 만들때 모던 C++을 따로 배워야한다지만 배우는 입장에서 초기 버젼이라 함수가 적고 그럼으로써 구현 사항이 적은것은 질리지 않고 익히며 어떤 원리로 이 언어가 만들어졌는지 이해하기에 괜찮다 싶다.
  • Container 즉, 자료구조에 대해 구현해야한다.
    • 크게 dynamic array와 tree로 나눌 수 있다. 
    • dynamic array
      • vector
      • stack
    • tree
      • map
      • set

 

그 외에 C++에 한축인 Template에 대해 알아야한다
C++에서의 generic programmingtemplate이라 한다.

- 단어로의 generic은 복제약, 전형적인 것 이라는 의미가 있다.

- 프로그래밍에서는 데이터 형식에 의존하지 고, 하나의 값이 여러 다른 데이터 타입을 가질 수 있는 기술에 중점 두어 재사용성을 높일 수 있는 방식을 의미한다.

 

이런식으로 generic programming이 적용된 STL은 어떤 타입에 대해서든 처리하게 만들 수 있어서 더욱 유연하게 프로그래밍 할 수 있게 해준다.

test

 

--- 밤이 늦어서 이만 줄일 예정이다.

 

정리 더 해야할 것들

  • Generic programming 다른 언어에서의 예시
  • Template programming과 generic programming은 완전히 일치하는가
  • Template meta programming의 정의와 범위(경계값)
  • SFAINAE
    • std::enable_if
    • std::is_integral
  • std::allocator
  • Iterator
    • std::iterator_traits
    • std::reverse_iterator
  • std::equal
  • std::lexicographical_compare
  • std::pair
  • std::make_pair

 

'트레이닝 > 42' 카테고리의 다른 글

[42seoul] Transcendence 웹 프로젝트  (0) 2023.07.06
[42seoul] Webserv 후기  (0) 2023.04.17
[Inception] intro  (0) 2022.12.25
[STL|Container] 공부해야할 것들  (0) 2022.12.11