【问题标题】:Could someone explain the meaning of vector<Node*>()有人可以解释 vector<Node*>() 的含义吗
【发布时间】:2021-10-14 19:53:33
【问题描述】:

我正在解决 Leetcode 中的 Clone Graph,但是我在以下代码中遇到了问题

 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;
    }
};

声明neighbors = vector&lt;Node*&gt;(); 是什么意思。更具体地说,vector&lt;Node*&gt;()。为什么后面是括号?

【问题讨论】:

  • 你应该了解objects、pointers和vectors
  • Node a = Node() 会做什么?
  • LeetCode 等网站假定您知道解决问题所使用的计算机语言。如果你问这样的关于 C++ 的基本问题,也许你选择了错误的语言来尝试解决 LeetCode 问题。 LeetCode 和其他类似的网站并不在教你 C++。
  • 获取您最喜欢的关于c++ 的书籍并查找构造函数。
  • 这里什么都不做,因为neighbors已经用它的默认构造函数初始化了。

标签: c++ vector constructor default-constructor copy-assignment


【解决方案1】:

其实是Node类的构造函数中的这个语句

neighbors = vector<Node*>();

是多余的。

使用移动赋值运算符,将调用类std::vector&lt;Node *&gt;的默认构造函数vector&lt;Node*&gt;()创建的空向量分配给已经创建的空向量neighbors,它是类Node的数据成员。

您可以从类 Node 的构造函数中删除此语句。事实上它没有任何效果。

【讨论】:

    猜你喜欢
    • 2015-03-30
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 2020-06-14
    • 1970-01-01
    • 1970-01-01
    • 2015-12-17
    • 2010-11-27
    相关资源
    最近更新 更多