将向量作为参数(C++)传递时,没有匹配函数异常
No matching function exception when passing vector as a parameter (C++)
我在以下代码中遇到了一个奇怪的编译错误:
class Solution {
public:
int function(vector<int>& nums) {
//Did something
int len = nums.size();
int mid = len / 2;
if (nums[mid] < nums[0]) {
vector<int> newVec(nums.begin(), nums.begin() + mid);
return function(newVec);
}
else
return function(vector<int>(nums.begin() + mid + 1, nums.end()));
}
};
错误发生在:return function(vector<int>(nums.begin() + mid + 1, nums.end()));
在我看来,如果我先构造向量,然后把它传递给函数,它就可以很好地工作。就像我在if
:下的区块中所做的那样
vector<int> newVec(nums.begin(), nums.begin() + mid);
return function(newVec);
但如果我把这两个步骤结合起来,就会出现错误。有人能为我解释一下吗?非常感谢~
================================================
编辑:
编译错误为
no matching function for call to ‘Solution::function(std::vector<int>)’
vector<int>& nums
是左值引用。您必须传递一个左值。要允许这两种用途,请更改为vector<int> const &nums
,无论如何都应该这样做
首先考虑重新设计function
以接受迭代器范围。然后,您可以运行整个算法,只需查看单个缓冲区,而不是对其部分进行大量复制。
–nbsp;M.M
相关文章:
- 从构造函数抛出异常时如何克服内存泄漏
- 创建具有 new in 函数和"this is nullptr"异常的对象
- 函数如何通知用户它基于函数原型抛出异常?
- C++/CLI System.AccessViolation在托管类中调用非托管函数时出现异常
- 如何编写带有异常的构造函数
- 有没有办法捕获 STL 函数未被赋予正确参数的异常?
- 在缺少函数重载时抛出异常,并带有 std::variant 而不是编译时错误
- 从函数(不抛出函数)返回异常以进行消息格式化?
- 从 C++ 中异常的构造函数引发异常
- 赋予全局变量而不是局部变量优先级的函数 - (异常行为)
- 是否允许分配器构造和销毁成员函数从内部逻辑引发异常?
- 调用参数不是原子参数的函数是此代码引发异常的原因吗?
- (此函数用于计算 SMA).在 FA.exe 中0x00509159引发异常: 0xC0000005:访问冲突读取位置0
- 我正在尝试创建一个使用 c++ 中的参数包构造函数的异常类
- C++中函数出现Bad_alloc异常
- 为什么 c++ 使用 throw() 关键字来指示函数不会引发任何异常
- 在析构函数内部处理异常(但不抛出)
- 在OpenCV_core310.dll中使用findContours函数时,OpenCV引发未处理的异常
- 为sLinkedList编写插入函数时引发异常
- c++运算符=工作异常(函数内部输出正常,但返回后错误)