C++ 将 vector 传递给函数 : reference vs. 指针,哪个是首选?

标签 c++ function pointers reference parameter-passing

<分区>

将 vector 传递给函数时,应使用哪种方法:引用还是指针?

在大多数情况下,两者中的任何一个都可以完成这项工作。 即使在这些情况下,这两种方法的执行方式是否存在差异?

我不知道是否存在只有两者之一有效的情况。 有这样的案例吗?

编辑:我将这个问题称为 Q1,Q2 the question cited as containing the answer to this OP , 和 A1/A2 各自的答案集。 Q2 询问指针与引用的一般差异(不是为了传递给函数)。这与第一季度有很大不同,因为:

  1. Q2 的许多答案可能与 Q1 无关。
  2. Q2的答案中凡是与Q1相关的内容,都需要读者筛选,有些读者甚至无法筛选。

因此,将此标记为骗局可能比帮助读者更有害。

最佳答案

这主要是偏好。我遵循以下规则:尽可能使用 (const) 引用,必要时使用 (const) 指针。

引用隐式保证不指向 null。违反此保证会导致未定义的行为,因此请确保检查是否将指针转换为引用!在我看来,这是唯一的主要优势。

I do not see if there are cases where only one of the two would work. Is there any such case?

如果 vector 在堆上并且你只持有指向它的指针,那么它可能是一个 nullptr。比您不能传递引用,因为引用可能不为空。如果您不这样做,它会调用未定义的行为。

关于C++ 将 vector 传递给函数 : reference vs. 指针,哪个是首选?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52255326/

相关文章:

c - 传递参数时指针到指针的语法(C 语言)

c++存储数组下一个位置的地址

C语言: memory allocation of a structure of two char* pointers

c++ - 将函数从 main 移动到原型(prototype),现在它不起作用

c++ - 时间多数表决算法错误

php - fatal error : Call to undefined function oci_connect() in Wamp

typescript - typescript 中可选的必需参数

C++:将引用成员初始化为在初始化列表中创建的对象

c++ - 在 C++ 中复制 vector 时 vector 运算符 = 出错

r - 如何从联合函数中获取 match.call()?