Skip to content
This repository was archived by the owner on Jan 27, 2021. It is now read-only.

Commit 9216647

Browse files
committed
1. fix issue #2 on github.
1 parent d085451 commit 9216647

File tree

6 files changed

+7
-8
lines changed

6 files changed

+7
-8
lines changed

content/chapter2/chapter2-2-chinese.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -116,4 +116,4 @@ v.pop_back();
116116

117117
逻辑上,我们将选定元素与最后一个元素进行交换。不过,在代码中元素并没有进行交换,代码直接使用最后一个值覆盖了选定元素的值。为什么要这样?当我们交换元素时,就需要将选定的元素存储在一个临时变量中,并在最后将这个临时变量中的值放在`vector`的最后。这个临时变量是多余的,而且要删除的值对于我们来说是没有意义的,所以这里选择了直接覆盖的方式,更加高效的实现了删除。
118118

119-
好了,交换是无意义的,复盖是一种更好的方式。让我们来看下这个,当我们要获取`vector`最后元素的迭代器时,只需要简单的执行`*it = v.back();`就行了,对吧?完全正确,不过试想我们存储了一些非常长的字符串在`vector`中,或存储了另一个`vector``map`——这种情况下,简单的赋值将对这些值进行拷贝,那么就会带来非常大的开销。这里使用`std::move`可将这部分开销优化掉:比如字符串,指向堆内存上存储的一个大字符串。我们无需拷贝它。只需要移动这个字符串即可,就是将目标指针指向这块地址即可。移动源保持不变,不过出于无用的状态,这样做可以类似的让目标指针指向源指针所在的位置,然后将原始位置的元素删除,这样做即完成了元素移动,又免去了移动消耗。
119+
好了,交换是无意义的,覆盖是一种更好的方式。让我们来看下这个,当我们要获取`vector`最后元素的迭代器时,只需要简单的执行`*it = v.back();`就行了,对吧?完全正确,不过试想我们存储了一些非常长的字符串在`vector`中,或存储了另一个`vector``map`——这种情况下,简单的赋值将对这些值进行拷贝,那么就会带来非常大的开销。这里使用`std::move`可将这部分开销优化掉:比如字符串,指向堆内存上存储的一个大字符串。我们无需拷贝它。只需要移动这个字符串即可,就是将目标指针指向这块地址即可。移动源保持不变,不过出于无用的状态,这样做可以类似的让目标指针指向源指针所在的位置,然后将原始位置的元素删除,这样做即完成了元素移动,又免去了移动消耗。

content/chapter2/chapter2-3-chinese.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,8 +42,7 @@
4242
Aborted (core dumped)
4343
```
4444
45-
46-
##How it works...
45+
## How it works...
4746
4847
`std::vector`提供了`[]`操作符和`at`函数,它们的作用几乎是一样的。`at`函数会检查给定的索引值是否越界,如果越界则返回一个异常。这对于很多情景都十分适用,不过因为检查越界要花费一些时间,所以`at`函数会让程序慢一些。
4948

content/chapter2/chapter2-4-chinese.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
aaa foobar order random some without words yyy zzz
7575
```
7676

77-
##How it works...
77+
## How it works...
7878

7979
程序整个过程都是围绕`insert_sorted`展开,这也就是本节所要说明的:对于任意的新字符串,通过计算其所在位置,然后进行插入,从而保证`vector`整体的排序性。不过,这里我们假设的情况是,在插入之前,`vector`已经排序。否则,这种方法无法工作。
8080

content/chapter2/chapter2-5-chinese.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ C++17中,添加了`try_emplace`函数,其只有在满足条件的情况下
3434
};
3535
```
3636
37-
3. 主函数中,我们否限定义了一个百万富翁的列表。世界上有很多百万富翁,所以我们创建一个有限列表来存储这些富翁的信息。这个列表是已排序的。2017年福布斯富豪名单,世界百万富翁排行榜可以在 https://www.forbes.com/billionaires/list 查到。
37+
3. 主函数中,我们定义了一个百万富翁的列表。世界上有很多百万富翁,所以我们创建一个有限列表来存储这些富翁的信息。这个列表是已排序的。2017年福布斯富豪名单,世界百万富翁排行榜可以在 https://www.forbes.com/billionaires/list 查到。
3838
3939
```c++
4040
int main()
@@ -54,7 +54,7 @@ C++17中,添加了`try_emplace`函数,其只有在满足条件的情况下
5454
{"Wang Jianlin", 31.3, "China"},
5555
{"Li Ka-shing", 31.2, "Hong Kong"}
5656
// ...
57-
}
57+
};
5858
```
5959

6060
4. 现在让我们定义一个表。这个表由表示国家名的字符串和一个组对构成。组对中会具有上面列表的一个(const)副本。这也就是每个国家最富有的人。组对中另一个变量是一个计数器,其会统计某国的富豪人数。

content/preface/about-this-book-chinese.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@
3838

3939
# 适读群体
4040

41-
如果你没有编写过C++程序的经验,那么请将本书放回书架。如果你只想学习有关语言基础的只是,那么本书不是你理想的选择。当你了解完语言基础后,本书会对你的语言技巧进行升级。
41+
如果你没有编写过C++程序的经验,那么请将本书放回书架。如果你只想学习有关语言基础的知识,那么本书不是你理想的选择。当你了解完语言基础后,本书会对你的语言技巧进行升级。
4242

4343
除此之外,如果你符合如下的描述的话,可以继续阅读本书:
4444

content/preface/preface-chinese.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ C++是一门伟大且具有力量的语言。它使用简单的高级接口,
66

77
目前为止,C++作为一门编程语言提供了语言相应的语言特性个标准库工具,用于处理复杂的标准数据结构和算法,包括:智能指针、Lambda表达式、常量表达式、便捷式可控线程的并发编程、正则表达式、随机数发生器、异常、可变参数模板(C++的部分模板类是图灵完备的!)、自定义文字、便捷式文件系统遍历等等。这些功能使它成为一种通用的语言,并在软件行业的所有领域,用于实现高质量和高性能的软件。
88

9-
不过,很多编程者只将C++当做一门编程语言学习,而不太重视标准库(STL)的使用。不使用C++所带的标准库,将会让C++看起来就像是具有类型的C语言,21世纪的现代化程序不应该写成这样。并且,这样的使用时令人沮丧的,就像是卸掉了它的一条手臂一样。
9+
不过,很多编程者只将C++当做一门编程语言学习,而不太重视标准库(STL)的使用。不使用C++所带的标准库,将会让C++看起来就像是具有class的C语言,21世纪的现代化程序不应该写成这样。并且,这样的使用令人沮丧,就像是卸掉了它的一条手臂一样。
1010

1111
Bjarne Stroustrup(C++之父)在他的《C++程序设计语言》(C++11版本)中写到
1212

0 commit comments

Comments
 (0)