如何初始化结构的向量成员?

时间:2012-10-31 22:40:43

标签: c++ struct

假设我有一个结构,其成员是一个向量。在构造函数中,我想将其设置为NULL。但后来我希望能够将事情推回去。如何在向量为NULL之后初始化向量?

struct structName {
    vector<int> vec;
    structName() {
        vec = NULL
    }
    void set(int);
}

void structName::set(int n) {
    // What do I put here?
    vec.push_back(n);
}

感谢您的帮助!

4 个答案:

答案 0 :(得分:2)

它已经通过默认构造函数初始化,如果需要调用其他构造函数,请使用初始化列表。

请记住,这是C ++,而不是Java / C#/等等。 对象为空是没有意义的(好吧,它也不是那些语言,而是继续阅读)。它不可能发生。在Java和类似的语言中,你有变量是对象的引用,那些引用(不是对象!)可能是也可能不是null。

在C ++中并非如此。在引用它们的对象和指针之间有一个严格的描述(指针,或者当然,可以为null或指向无效的内存位置)。

答案 1 :(得分:0)

向量的默认构造函数将其设置为最简单的状态:无内容。所以不要管它。

答案 2 :(得分:0)

将向量初始化为NULL没有任何意义。也许你对指针感到困惑。如果要将向量初始化为空向量,则会自动进行。换句话说就像这样

struct structName {
    vector<int> vec;
    structName() {
    }
    void set(int);
}

void structName::set(int n) {
    vec.push_back(n);
}

答案 3 :(得分:0)

我认为你会像在Java中一样思考C ++对象。 不要他们是完全不同的野兽。

在C ++中,对象不是Java中的引用,因此将它们归零是没有意义的。实际上,尝试vec = NULL是一个错误,因为NULL实际上只是0。

相反,只需删除行vec = NULL,它就会按原样运行。该向量将默认构造为空,您不必进行任何其他初始化。