Skip to content
This repository has been archived by the owner on Feb 15, 2021. It is now read-only.

《C++ Primer 中文版(第 5 版)》练习

Notifications You must be signed in to change notification settings

shoujiaxin/cpp-primer-exercises

Repository files navigation

《C++ Primer 中文版(第 5 版)》练习

练习环境

  • 操作系统:macOS Mojave Version 10.14

  • 编译器:Apple LLVM version 10.0.0 (clang-1000.11.45.2)

  • 编辑器:Microsoft Visual Studio Code

目录

勘误表

  1. 第 330 页,表 9.19

    q.pop() 删除 queue 的首元素或 priority_queue 的最高优先级的元素,但不返回此元素。

  2. 第 352 页

    如果我们希望能改变一个被捕获的变量的值,就必须在参数列表尾加上关键字 mutable。因此,可变 lambda 不能省略参数列表。

  3. 第 374 页

    因此一个 unordered_multiset 是一个允许重复关键字,元素无序保存的集合。

  4. 第 378 页

    • 两个关键字不能同时 "小于" 对方;如果 k1 "小于" k2,那么 k2 绝不能 "小于" k1
    • 如果 k1 "小于" k2,且 k2 "小于" k3,那么 k1 必须 "小于" k3
    • 如果存在两个关键字,任何一个都不 "小于" 另一个,那么我们称这两个关键字是 "等价" 的。……

    如果两个关键字是等价的(即,任何一个都不 "小于" 另一个),……

  5. 第 403 页

    但如果有其他 shared_ptr 也指向这块内存,它就不会被释放掉

    shared_ptr<Foo> use_factory(T arg) {
      shared_ptr<Foo> p = factory(arg);
      return p;
    }
  6. 第 457 页,练习 13.28

    class TreeNode {
     private:
      std::string value;
      int *count;
      TreeNode *left;
      TreeNode *right;
    };
  7. 第 466 页

    它使用后置递增(参见 4.5 节,第 131 页),因此这个调用会在 first_free 当前值指定的地址构造一个对象,并递增 first_free 指向下一个未构造的元素。

  8. 第 493 页,练习 14.3

    (d) svec1[0] == "stone"

  9. 第 509 页

    sum = intNegate(intAdd(10, 20));  // 等价于 sum = -30
  10. 第 617 页

debug_rep<string>(const string&),第一个模板,T 被绑定到 string

  1. 第 629 页

    // decltype((i)) 为 int&(参见 2.5.3 节,第 62 页),使用第一个 (T&) 部分特例化版本
    remove_reference<decltype((i))>::type b;
  2. 第 666 页

    标准库定义了一组操纵符 (manipulator)(参见 1.2 节,第 6 页)来修改流的格式状态,如表 17.17 和表 17.18 所示。

  3. 第 706 页

    对于命名空间中名字的隐藏规则来说有一个重要的例外,它使得我们可以直接访问输入运算符。

新标准修改

  1. 第 267 页,7.5.6 字面值常量类

    C++14 标准删除了 constexpr 函数成员是隐式 const,新标准中,非静态成员函数可以为非 const

About

《C++ Primer 中文版(第 5 版)》练习

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages