• 资源管理
    • 内存管理
      • heap
        • new/delete
        • malloc/free
      • stack
      • RAII
  • 右值和移动语义
    • 移动语义使得在 C++ 里返回大对象的函数和运算符成为现实
    • 返回值优化 NRVO
  • 标准容器
    • string 是模版 basic_string 对于 char 类型的特化
    • vector
    • deque
    • list
    • forwar_list
    • queue
    • stack
    • 函数对象 less

      template <class T>
      struct less
        : binary_function<T, T, bool> {
        bool operator()(const T& x,
                        const T& y) const
        {
          return x < y;
        }
      };
      
    • 函数对象 hash 的特化

      template <class T> struct hash;
      
      template <>
      struct hash<int>
        : public unary_function<int, size_t> {
        size_t operator()(int v) const
          noexcept
        {
          return static_cast<size_t>(v);
        }
      };
      
    • priority_queue
    • set -> multiset
    • map -> multimap
    • unordered_set -> unordered_multiset
    • unordered_map -> unordered_multimap
    • array
  • Unicode
    • ASCII
  • 编译期多态——泛型编程和模板
    • 特化模板

      template <>
      cln::cl_I my_mod<cln::cl_I>(
        const cln::cl_I& lhs,
        const cln::cl_I& rhs)
      {
        return mod(lhs, rhs);
      }
      
  • 编译期计算——模板元编程

    template <int n>
    struct factorial {
      static const int value =
        n * factorial<n - 1>::value;
    };
    
    template <>
    struct factorial<0> {
      static const int value = 1;
    };
    
    • trait
    • SFINAE
  • 函数式编程
  • 并发编程

References