为什么这个函数头不是最优的
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 值传递给函数,移动语义应该启动,这甚至可以节省您复制向量的成本。
该项目的一些背景知识。
Class图书->包含图书信息
Class BooksDB -> 书籍数据库 Added/Removed/Searched...
现在我得到了以下函数头,它打印放置在 BooksDB 书籍矢量中的书籍。
void printBookDetails(const std::vector<Book*>& books)
此函数接收书籍指针向量作为常量引用,将其复制到相同类型的新向量中。根据书籍的唯一 ISBN 对新矢量进行排序并打印它们。
我现在被问到为什么上面的函数头在接收参数的方式上不是最优的,应该如何重写它以及为什么选择这个函数头。
我很想得到一个建议,因为我已经阅读了关于将对象传递给函数的所有内容,但无法解决这个问题..
在 printBookDetails
中,如果您要复制向量,则只需将其更改为
void printBookDetails(std::vector<Book*> books)
并让副本为您生成。这使您无需在函数中执行此操作。
另一个好处是,如果将 r 值传递给函数,移动语义应该启动,这甚至可以节省您复制向量的成本。