为什么这个函数头不是最优的

Why is this function header not optimal

本文关键字:函数 为什么      更新时间:2023-10-16

项目的一些背景
课堂书籍->包含书籍信息
Class BooksDB->可以添加/删除/搜索书籍的书籍数据库。。。。

现在我得到了下面的函数头,它打印放置在BooksDB图书矢量中的图书。

void printBookDetails(const std::vector<Book*>& books)

此函数接收书籍指针的矢量作为常量引用,并将其复制到相同类型的新矢量中。根据书籍唯一的ISBN对新矢量进行排序并打印。

现在有人问我,为什么上面的函数头在接收参数的方式上不是最佳的,应该如何重写,以及为什么选择这个函数头。

我很想得到一个建议,因为我已经阅读了SO上关于将对象传递给函数的所有内容,但无法理解。。

printBookDetails中,如果要复制矢量,则可以将其更改为

void printBookDetails(std::vector<Book*> books)

让副本为您生成。这样可以避免在函数中执行此操作。

另一个好处是,如果将r值传递给函数,则应引入移动语义,从而节省复制向量的成本。