《深入应用C++11:代码优化与工程级应用》勘误表

简介: 转自:http://www.cnblogs.com/qicosmos/p/4562174.html 整理一下吧,原文好乱。

转自:http://www.cnblogs.com/qicosmos/p/4562174.html

 

整理一下吧,原文好乱。。。。。。。。。。。。。。。

 

page 4, 倒数第9,10行注释中的变量名e和f应该改为g和h

 

page16, 第二行 "c++" 应为 "c++98/03"; page21, 第一段代码返回处为 "ret val" ,应为 "val;"; page61, 最后一行 "tuple<constchar*, int>tp" 应为 "tuple<const char *, int> tp"

 

page21, 关于模板参数的顺序搞错了,现更正如下:

但需要注意的是,在调用函数模板时,若显示指定模板的参数,由于参数填充顺序是从左往右的,因此,像下面这样调用:
func<long>(123); // func的返回值类型是long
函数模板func的返回值类型是long,而不是int,因为模板参数的填充顺序从左往右,所以指定的模板参数类型long会作为func的返回值类型而不是参数类型,最终func的返回类型为long。

 

page 28, 倒数第二行“而对于非集合类型,则需要先自定义一个合适的构造函数”中的“非集合类型”应该改为“非聚合类型”。

 

page62, 代码段"auto tp = return std::tie(1, "aa", 2);"语法错误,要去掉return,tie不能绑定右值,应该改为:

int x = 1;
int y = 2;
string s = "aa";
auto tp = return std::tie(x, s, y);

接下来一段代码中"constchar*" 应为 "const char *","tp.get"应该改为“std::get”

 

page62, 介绍forward_as_tuple的用法写错了,应该改为:

std::map<int, std::string> m;
 
m.emplace(std::piecewise_construct,
              std::forward_as_tuple(10),
              std::forward_as_tuple(20, 'a'));

 

page 63, 第二行“第2章”应该改为“第3章”。

 

page68, 代码"int&& var1 = x;  //var1"应该改为"int&& var1 = 1;  //var1", 这个问题由读者YZB_OO7指出,在此表示感谢。

 

68页“其中,var1的类型是一个左值类型”,应该改为“其中,var1的类型是一个右值类型”,由网友低调指出,再次表示感谢。

 

69页:

将输出如下结果:

...

rvalue : 1

lvaue : 2  此处应该为 lvalue : 2

 

page74,倒数第二和第三行"_len"和"_data"应该为"m_len"和"m_data"。

 

page 173,代码清单5-2中,both函数写到Complex类的外面了,应该放里面。

 

80页: FuncWrapper(test0) ;   // 没有返回值, 打印 1        此处应该是打印void

 

page93,第二行decay的描述不太准确,应该是移除引用和cv,函数或数组退化为指针。

 

page99第二段和第三段代码中的很多空格被被吃掉了。

 

page101,"returnt"应该改为"return t"。

 

page107,109, "structSum"应该为"struct Sum";

 

page108,第二段代码中 "sizeof (First);" 应该为 "sizeof(Last);"。

 

99页auto const typedef后少空格

 

104页最后和105页上面,模板的声明对不上

 

page110,第二行 "MakeIndexes<1,2,3>::type" 应该为 "MakeIndexes<3>::type"; page121, 注释 "不带参数的 lamda" 应该为 "不带参数的 lambda", 下一行的 "return12" 应为 "return 12"

 

page122, 最后一段代码的错误:pMax, pGet 后文写成了 PMax PMin, hMode 后文写做 hDLL;

 

page124, 函数名“ExcecuteFunc”应该为"ExecuteFunc"。

 

page113, 最下面的Instance函数中缺少了模板参数T。

 

page126,  第一段代码中的 "return0;" 应为 "return 0;",

 

page127, Then的实现中"[func, &f]"应改为"[func, f]", p

 

age129, 第8行"emplate"应该为"template",

 

page136, 第8行"it->first"应该为"v", 最后三行中Integer Max应该为IntegerMax;

 

133页的那个测试函数下:

PrintType<function_traits<std::function<int(int)>>::args<0>>();  //这句有问题,在args<0>后面少了type

应该改为:

PrintType<function_traits<std::function<int(int)>>::args<0>::type>();

page137, 第4行MaxType应该为IntegerMax;

 

page141, 3.3.9 上面的一段是属于3.3.2lazy的那一节,不应该在这里。

 

page 155, 倒数第5行"std::uniq_ptr"应该改为“std::unique_ptr“。

 

158页,第三行代码"return stared_ptr<S>(this);"类型S应该是A。

 

page 156, 倒数第三行代码newint应该为new int

 

158页

  shred_ptr<A>GetSelf()

    {

        return shared_ptr<S>(this);       此处S应为A

    }

    int main() 

    {

        return0;     此处应为 return 0;

    }

 

page 177,倒数第三行语句unique_lock多写了一个,应该去掉一个。

 

page212,第二行,应该是"否则返回false."

 

page260, foo函数里,根据结果运行图10-3和编译调试,foo的输出应该为:
cout << "real foo function:" << a << endl; 而不是书中写到是real HT function

 

page337, 第三行缺少一个"]"符号;

 

page352, 两个count函数应该改为:

auto count() const -> decltype(std::distance(begin(), end()))
{
    return std::distance(begin(), end());
}

template<typename F>
auto count(const F& f) const -> decltype(std::count_if(begin(), end(), f))
{
    return std::count_if(begin(), end(), f);
}

 

page355, 第二行"decltype(begin())"应该改为"decltype(boost::make_iterator_range(std::find_if_not(begin(), end(), f), end()))"

 

page359, TestLinqCpp()里变量vct应该为v,min和max应该改为Min和Max。

 

page 406, 多写了一个AsyncSend函数。

 

 

 

相关文章
|
1月前
|
Ubuntu API C++
C++标准库、Windows API及Ubuntu API的综合应用
总之,C++标准库、Windows API和Ubuntu API的综合应用是一项挑战性较大的任务,需要开发者具备跨平台编程的深入知识和丰富经验。通过合理的架构设计和有效的工具选择,可以在不同的操作系统平台上高效地开发和部署应用程序。
103 11
|
8月前
|
存储 负载均衡 算法
基于 C++ 语言的迪杰斯特拉算法在局域网计算机管理中的应用剖析
在局域网计算机管理中,迪杰斯特拉算法用于优化网络路径、分配资源和定位故障节点,确保高效稳定的网络环境。该算法通过计算最短路径,提升数据传输速率与稳定性,实现负载均衡并快速排除故障。C++代码示例展示了其在网络模拟中的应用,为企业信息化建设提供有力支持。
248 15
|
6月前
|
监控 算法 数据处理
基于 C++ 的 KD 树算法在监控局域网屏幕中的理论剖析与工程实践研究
本文探讨了KD树在局域网屏幕监控中的应用,通过C++实现其构建与查询功能,显著提升多维数据处理效率。KD树作为一种二叉空间划分结构,适用于屏幕图像特征匹配、异常画面检测及数据压缩传输优化等场景。相比传统方法,基于KD树的方案检索效率提升2-3个数量级,但高维数据退化和动态更新等问题仍需进一步研究。未来可通过融合其他数据结构、引入深度学习及开发增量式更新算法等方式优化性能。
182 17
|
9月前
|
算法 Serverless 数据处理
从集思录可转债数据探秘:Python与C++实现的移动平均算法应用
本文探讨了如何利用移动平均算法分析集思录提供的可转债数据,帮助投资者把握价格趋势。通过Python和C++两种编程语言实现简单移动平均(SMA),展示了数据处理的具体方法。Python代码借助`pandas`库轻松计算5日SMA,而C++代码则通过高效的数据处理展示了SMA的计算过程。集思录平台提供了详尽且及时的可转债数据,助力投资者结合算法与社区讨论,做出更明智的投资决策。掌握这些工具和技术,有助于在复杂多变的金融市场中挖掘更多价值。
326 12
|
编解码 C++
cocos2d-x C++ 工程初探
cocos2d-x C++ 工程初探
|
存储 安全 C++
C++中的引用和指针:区别与应用
引用和指针在C++中都有其独特的优势和应用场景。引用更适合简洁、安全的代码,而指针提供了更大的灵活性和动态内存管理的能力。在实际编程中,根据需求选择适当的类型,能够编写出高效、可维护的代码。理解并正确使用这两种类型,是掌握C++编程的关键一步。
287 1
|
10月前
|
编译器 数据安全/隐私保护 C++
【C++面向对象——继承与派生】派生类的应用(头歌实践教学平台习题)【合集】
本实验旨在学习类的继承关系、不同继承方式下的访问控制及利用虚基类解决二义性问题。主要内容包括: 1. **类的继承关系基础概念**:介绍继承的定义及声明派生类的语法。 2. **不同继承方式下对基类成员的访问控制**:详细说明`public`、`private`和`protected`继承方式对基类成员的访问权限影响。 3. **利用虚基类解决二义性问题**:解释多继承中可能出现的二义性及其解决方案——虚基类。 实验任务要求从`people`类派生出`student`、`teacher`、`graduate`和`TA`类,添加特定属性并测试这些类的功能。最终通过创建教师和助教实例,验证代码
297 5
|
存储 并行计算 安全
C++多线程应用
【10月更文挑战第29天】C++ 中的多线程应用广泛,常见场景包括并行计算、网络编程中的并发服务器和图形用户界面(GUI)应用。通过多线程可以显著提升计算速度和响应能力。示例代码展示了如何使用 `pthread` 库创建和管理线程。注意事项包括数据同步与互斥、线程间通信和线程安全的类设计,以确保程序的正确性和稳定性。
267 5
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
230 2
|
编译器 C++
【C++核心】函数的应用和提高详解
这篇文章详细讲解了C++函数的定义、调用、值传递、常见样式、声明、分文件编写以及函数提高的内容,包括函数默认参数、占位参数、重载等高级用法。
196 3