【发布时间】:2021-10-05 05:37:08
【问题描述】:
在我的程序中,我有一个将多个向量作为参数的函数。我曾经将它们作为法线向量传递,所以函数的定义是这样开始的:
void do(std::vector<int> a, std::vector<int> b, std::vector<int> c){
调用看起来像这样:
do(d, e, f);
但我希望我的代码尽可能快,所以我想知道是否不传递向量而是传递指向向量的指针会更快。所以函数的定义看起来像这样:
void do(std::vector<int> *a, std::vector<int> *b, std::vector<int> *c){
还有这样的调用:
do(&d, &e, &f);
此更改是否会对性能产生影响?如果是:正面或负面,如果我的向量只包含 3 个元素,会有很大的不同吗?
【问题讨论】:
-
你有正确的想法,但在这种情况下更喜欢引用而不是指针。
-
如果
vectors 不会被do更改,请通过const引用传递它们(const std::vector<int> &a)如果你总是从你能做的最高限制开始使用对象,编译器可以更轻松地为您挑选错误。加上使用限制通常会使编译器更容易优化。 -
在
do函数中,你如何处理你传入的那些向量?你还在函数内部复制它们吗?此外,do是 C++ 中的关键字。你不想调用你的函数do。 -
这能回答你的问题吗? How to pass objects to functions in C++?
标签: c++ vector parameter-passing