gpt4 book ai didi

c++ - "Invalid initialization of non-const reference of type ' std::vector& ' from an rvalue of type ' std::vector"错误

转载 作者:搜寻专家 更新时间:2023-10-31 00:18:01 26 4
gpt4 key购买 nike

我从类型为“std::vector”的右值中得到了“无效初始化类型为‘std::vector&’的非常量引用”,这是最后一个在第二个参数中传入 merge_sort(right) 的错误.

left_merged = merge_sort(left);
// right_merged = merge_sort(right);
return merge(left_merged, merge_sort(right));

函数声明如下:

vector<int> merge_sort(vector<int>& vec)
vector<int> merge(vector<int>& left, vector<int>& right)

我一直在阅读关于右值如何成为临时对象的理论,如果它没有在初始化程序中使用或分配给变量,它就会被销毁,但我真正想要的是一个快速而肮脏的解决方案,以便能够调用参数中的函数。

有什么快速解决方案吗?

谢谢!

最佳答案

将参数类型更改为 const vector<int>& (const 引用),或简单地 vector<int> (按值(value))。

如果在函数内部您不对参数进行任何更改,则首选第一个选项(const 引用)。否则第二个(按值)。如果在函数内部,您正在立即复制参数,然后在忽略原始参数的同时操作拷贝,则按值获取参数,跳过拷贝,直接使用参数。

关于c++ - "Invalid initialization of non-const reference of type ' std::vector& ' from an rvalue of type ' std::vector"错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11817692/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com