C++引用赋值和值赋值

vector<int> &back = res.back();
vector<int> back = res.back();

vector<int> &back = res.back();vector<int> back = res.back(); 的区别在于赋值的方式和结果的不同。

  1. vector<int> &back = res.back();:

    • 这是一个引用赋值操作,back 是一个指向 res.back() 返回的向量的引用
    • 如果 res.back() 返回的向量发生更改,back 也会反映这些更改,因为它们引用同一个对象,同理backres.back() 同样更改。
    • 这种赋值方式不会创建新的向量副本,只是创建了一个指向现有向量的引用。
    • back变量在res.push_back(newInterval);会变为空悬引用,所以push_back后,若再次使用back应新建变量
  2. vector<int> back = res.back();:

    • 这是一个值赋值操作,backres.back() 返回的向量的副本。
    • 如果 res.back() 返回的向量发生更改,back 不会受到影响,因为它们是独立的对象
    • 这种赋值方式会创建一个新的向量副本,其中包含与原始向量相同的元素。

总结:res.back()返回的是引用,但是如果希望更改res.back()中的元素,要用引用来接【引用赋值】,也就是 vector<int> &back = res.back();否则采用【值赋值】vector<int> back = res.back();

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容