Effective Modern C++ 笔记 - 调优
对于C++
中的每一种技术或特性都不是万金油,它们在某些情况下使用是合理的,而在另一些情况下则不是。知道什么时候应用这些特性是合理的通常不会太难,但是本章涵盖了两个例外:一个是按值传递参数, 一个是置入。
关于何时使用它们受到许多因素的影响,尽管如此,它们都是现代C++
编程的重要部分,下面的条目提供了您需要的信息,以确定使用它们是否适合您的代码。
41:对于可复制的参数,如果move开销小,并且一定会被复制的前提下,考虑将其按值传递
说的就是这个方案:
1 | class Widget { |
与下面两个方案作对比
1 | class Widget { |
1 | class Widget{ |
按值传递的仅多一次
move
,如果move
开销小的话,这个方案更简洁且生成的目标更小。
42:考虑置入而非插入
- 优先用
emplace_back()
,emplace()
这类方法就对了 - 原则上,放置函数比插入函数更有效,它的效率不应该更低。