본문 바로가기

Coding

Modern C++ 개념 정리 (STL, Design Pattern, Concurrent, Template Programming)

본 포스트는 필자가 Modern C++을 공부하면서 중요하다고 생각되는 내용들을 정리한 포스트이다. 다루는 내용이 매우 많기 때문에 블로그 포스팅 형식으로는 더 이상 작성하지 않고 latex 파일로만 작성한다. 

 

1 Introduction

  1.1 What is new in modern c++

  1.2 Table summary
2 Intermediate  
  2.1 Temporary  
    2.1.1 return-by-value vs return-by-reference  
    2.1.2 temporary and casting  
  2.2 Conversion  
    2.2.1 Conversion constructor, conversion operator  
    2.2.2 explicit constructor  
    2.2.3 explicit conversion operator  
    2.2.4 explicit(bool), c++20  
    2.2.5 Conversion example: nullptr  
    2.2.6 Conversion example: return type resolver  
    2.2.7 Lambda expression and conversion  
  2.3 Constructor  
    2.3.1 Base from member idioms  
    2.3.2 Constructor and virtual function  
  2.4 This call  
  2.5 Member function pointer  
    2.5.1 std::invoke, std::mem_fn  
  2.6 Member data pointer  
  2.7 Implement custom max  
    2.7.1 Add compare operator  
    2.7.2 c++20 ranges algorithm  
  2.8 Size of member function pointer  
  2.9 new, delete and placement new  
    2.9.1 Using placement new  
    2.9.2 vector and placement new  
  2.10 Trivial constructor  
    2.10.1 Trivial default constructor  
    2.10.2 Trivial copy constructor  
  2.11 Type deduction  
    2.11.1 Auto type deduction  
    2.11.2 Array Name  
  2.12 Rvalue & forwarding & reference  
    2.12.1 Lvalue vs Rvalue  
    2.12.2 Reference & Overloading  
    2.12.3 Reference collapsing  
    2.12.4 Forwarding reference  
  2.13 Move semantics  
    2.13.1 Move constructor  
    2.13.2 std::move  
    2.13.3 Move and noexcept  
    2.13.4 Default move constructor  
    2.13.5 Rule of 3/5/0  
  2.14 Perfect forwarding  
    2.14.1 Using forwarding reference  
    2.14.2 Variadic parameter template  
    2.14.3 Member function pointer for perfect forwarding  
    2.14.4 Function object for perfect forwarding  
    2.14.5 Chronometry implementation  
    2.14.6 Notice for perfect forwarding  
    2.14.7 Perfect forwarding in STL  
  2.15 Callable object  
    2.15.1 Function object  
    2.15.2 Function object = function with state  
    2.15.3 closure & function object  
    2.15.4 inline & function object  
    2.15.5 STL & function object  

3 STL programming  
  3.1 STL structure  
    3.1.1 Generic algorithm – find  
    3.1.2 Make iterator  
    3.1.3 Generic Algorithm – list  
    3.1.4 Container, Iterator, Algorithm (CIA)  
    3.1.5 Member type  
  3.2 Iterator  
    3.2.1 Iterator concept  
    3.2.2 Container iterator  
    3.2.3 Iterator invalidation  
    3.2.4 std::ranges::begin  
    3.2.5 Iterator value type  
    3.2.6 Iterator category  
    3.2.7 Iterator operation  
    3.2.8 ++ vs next  
    3.2.9 std::copy vs std::ranges::copy  
    3.2.10 Reverse iterator  
    3.2.11 Insert iterator  
    3.2.12 std::counted_iterator & std::default_sentinel  
    3.2.13 Iterator and sentinel  
    3.2.14 Ostream iterator  
    3.2.15 Ostreambuf iterator  
    3.2.16 Istream iterator  
  3.3 Algorithm  
    3.3.1 Erase-remove idioms  
    3.3.2 Algorithm vs member function  
    3.3.3 std::erase, std::erase_if  
    3.3.4 Algorithm with function as parameter  
    3.3.5 Predicate  
    3.3.6 Algorithm copy version  
    3.3.7 Projection  
    3.3.8 Constrained algorithm function object  
  3.4 Container  
    3.4.1 Container basic  
    3.4.2 Allocator  
    3.4.3 Sequence container  
    3.4.4 std::vector  
    3.4.5 Capacity  
    3.4.6 Container & user define type  
    3.4.7 Emplace  
    3.4.8 std::array  
    3.4.9 std::move (std::array)  
    3.4.10 stack, queue  
    3.4.11 priority_queue  
    3.4.12 underlying container  
    3.4.13 std::set  
    3.4.14 find in std::set  
    3.4.15 std::set with user defined type  
    3.4.16 std::less implementation  
    3.4.17 is_transparent  
    3.4.18 std::map  
  3.5 Ranges  
    3.5.1 Range library  
    3.5.2 using views  
  3.6 Utility  
    3.6.1 std::bind  
    3.6.2 std::function  
    3.6.3 std::reference_wrapper  
    3.6.4 Smart pointer  
    3.6.5 weak_ptr  
    3.6.6 unique_ptr  
    3.6.7 chrono (ratio, duration)  

4 Design Pattern  
  4.1 Separation of commonality and variability  
    4.1.1 Template method pattern  
    4.1.2 Strategy pattern  
    4.1.3 Policy base design  
  4.2 Recursive pattern  
    4.2.1 Composite pattern  
    4.2.2 Decorator  
  4.3 Principle of indirect layer  
    4.3.1 Adapter  
    4.3.2 Proxy  
    4.3.3 Facade  
    4.3.4 Bridge  
  4.4 Notification, enumeration, visitation  
    4.4.1 Observer  
    4.4.2 Iterator  
    4.4.3 Visitor  
  4.5 Creating and sharing objects  
    4.5.1 Singleton  
    4.5.2 Factory  
    4.5.3 Prototype  
    4.5.4 Abstract factory  
    4.5.5 Flyweight  
    4.5.6 Builder  
  4.6 MISC  
    4.6.1 Memento  
    4.6.2 State pattern  

References

1. (lecture) CODENURI - c++ Master

2. (blog) [모던c++] 정리 - tango1202