【发布时间】:2022-07-04 23:20:01
【问题描述】:
我正在解决leetcode 上的一个问题,我必须在其中初始化一个所有元素都设置为-1 的向量。我在类外声明了向量,并尝试在构造函数中插入值,这是我的代码:
class MyHashMap { private: vector<int>key; public: MyHashMap() { key(1e6+1, -1); } void put(int x, int y) { key[x]=y; } int get(int x) { return key[x]; } void remove(int x) { key[x]=-1; } };
我在构造函数中遇到了这个错误。
错误:“向量”类型不提供调用运算符 键(1e6+1, -1);
但是,如果在构造函数中我编写如下代码:-
MyHashMap(): key(1e6+1, -1) {}
那时它工作得很好。谁能解释一下错误原因以及它是如何解决的。
【问题讨论】:
-
一个是初始化器,另一个只是调用变量。
: key(1e6+1,-1)有点等价于std::vector<int> key{1e6+1,-1};而key(1e6 + 1, -1)将等价于key(1e6 + 1, -1) -
第一种情况与
vector<int>key; key(1e6+1, -1);相同,您很可能不会期望它会起作用。 (如果您没有,请给自己一个good book。)