我正在Leetcode中解决克隆图,但在以下代码中遇到了问题
class Node {
public:
int val;
vector<Node*> neighbors;
Node() {
val = 0;
neighbors = vector<Node*>();
}
Node(int _val) {
val = _val;
neighbors = vector<Node*>();
}
Node(int _val, vector<Node*> _neighbors) {
val = _val;
neighbors = _neighbors;
}
};
CCD_ 1这句话是什么意思。更具体地说,vector<Node*>()
。为什么后面跟着括号?
实际上,Node 类的构造函数中的这句话
neighbors = vector<Node*>();
是多余的。
使用了移动赋值运算符,该运算符将通过调用类std::vector<Node *>
的默认构造函数vector<Node*>()
而创建的空向量赋值给已经创建的作为类Node的数据成员的空向量neighbors
。
您可以从类Node的构造函数中删除此语句。事实上,它没有任何作用。