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

Why is this function header not optimal

该项目的一些背景知识。
Class图书->包含图书信息
Class BooksDB -> 书籍数据库 Added/Removed/Searched...

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

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

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

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

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

printBookDetails 中,如果您要复制向量,则只需将其更改为

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

并让副本为您生成。这使您无需在函数中执行此操作。

另一个好处是,如果将 r 值传递给函数,移动语义应该启动,这甚至可以节省您复制向量的成本。