为什么第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...
最近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,但在这种情况下什么也没找到。