为什么我们不能在算法和数据结构中使用引用?

Ang*_*gus 4 c++

作为一般规则,使用函数参数和返回类型中的引用来定义有吸引力的接口.使用指针实现算法和数据结构.

我在一篇文章中读到了这一行.我怀疑为什么参考不能用于算法和数据结构?

请帮我看看为什么会这样.

Set*_*gie 7

因为在初始化引用特定的对象之后,不能引用引用任何其他对象.

作为证据,标准的§8.5.3.2说

初始化后,无法更改引用以引用另一个对象.请注意,引用的初始化与赋值的处理方式非常不同.参数传递(5.2.2)和函数值返回(6.6.3)是初始化.

数据结构和算法(尽管程度较小)通常涉及在其自身内添加,删除和重新排序对象.使用引用你不能这样做,所以你使用指针来低成本地做.

  • @stijn:你错了,你的代码片段不会修改引用,而是修改引用的对象.在它之后,`a`将具有与`b`相同的值(假设它们被初始化),但是`&c`将具有与`&a`相同的值,而不是与`&b`相同的值. (7认同)
  • @stign那不一样.你刚刚更改了该行中`a`的值,你没有让`c`引用'b`.对`c`的进一步赋值只会进一步改变`s的值,而不是'b'的值. (6认同)
  • @stijn如果您有疑问,请更新标准报价.引用实际上解决了您展示的具体示例.如果你删除你的downvote,我会很感激. (2认同)