没有匹配的默认ctor调用

时间:2019-05-29 09:49:18

标签: c++ struct unordered-map default-constructor

为什么第16行需要默认结构范围的ctor(在下面的代码中提到)?

我的代码:

struct range {
    int begInd, endInd, fr;
    range(int b, int e, int f) : begInd(b), endInd(e), fr(f) {}
    //range() {}   /* COMPILE SUCCESS if this line is uncommented */
};

class Solution {
public:
    int findShortestSubArray(vector<int>& nums) {
        unordered_map<int, range> freq;
        int i, minLen = INT_MAX, maxFreq;
        for (i = 0; i < nums.size(); ++i) {
            if (freq.find(nums[i]) == freq.end())
                freq.insert(make_pair(nums[i], range(i, i, 1)));
            else {
                freq[nums[i]].endInd = i;   // Line 16
                freq[nums[i]].fr++;
            }
        } // more code after this...

编译错误(leetcode不允许我复制错误,因此是图像):     enter image description here

最近3行错误:
第16行:字符29:从此处开始需要
/usr/local/include/c++/8.2.0/tuple:1668:70:错误:没有匹配的函数可调用'range :: range()'
秒(std :: forward <_Args2>(std :: get <_Indexes2>(__ tuple2))...)

我的理解:由于未在第16行的unordered_map中创建任何新节点,因此不需要任何类型的ctor。 我还检查了unordered_map::operator[] on Cplusplus,但在这种情况下什么也没找到。

0 个答案:

没有答案