c++ - 将 vector 作为参数传递时没有匹配的函数异常(C++)

标签 c++ debugging compiler-errors

我在以下代码中遇到了一个奇怪的编译错误:

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()));
在我看来,如果我先构造 vector ,然后将其传递给函数,它就可以很好地工作。就像我在 if 下的 block 中所做的那样:
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首先接受迭代器范围。然后你可以运行你的整个算法,只看一个缓冲区,而不是制作成堆的部分拷贝。
- 毫米

关于c++ - 将 vector 作为参数传递时没有匹配的函数异常(C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34146916/

相关文章:

C:如何舍入一个全局变量?

c++ - 使用 MSVC 将 C 源文件编译为 C++

c++ - 为什么我不能在一个类中有一个非整数静态 const 成员?

debugging - NetBeans 调试中 "step over"和 "step over expression"有什么区别?

java - 未封闭字 rune 字背后的算法

C++ void 函数试图返回一个 int?

c++ - 一个通用的集合操作类,即交集、并集、减号等

c++ - 将比较函数传递给 qsort C++

sql - 我如何调试这个 Crystal 报表公式?

node.js - 使用命令进行 VS Code Node 调试