在没有对象的向量中推回对象

gvg*_*zio 2 c++ class vector object push-back

我知道在向量中推回对象的正确方法是声明同一个类的对象并将其作为方法push_back的参数传递给它.即类似的东西

class MyClass{
    int a;
    int b;
    int c;
};

int main(){
    std::vector<MyClass> myvector;

    MyClass myobject;
    myobject.a = 1;
    myobject.b = 2;
    myobject.c = 3;

    myvector.push_back(myobject);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:可以推回仅传递对象值而不是另一个对象的对象吗?即类似的东西

class MyClass{
    int a;
    int b;
    int c;
};

int main(){
    std::vector<MyClass> myvector;

    int a = 1;
    int b = 2;
    int c = 3;

    myvector.push_back({a, b, c});
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

Ale*_*exD 11

如果声明a,b,cpublic,

class MyClass{
public:
    int a;
    int b;
    int c;
};
Run Code Online (Sandbox Code Playgroud)

然后你可以使用列表初始化:

myvector.push_back({a, b, c});
Run Code Online (Sandbox Code Playgroud)

但是建立一个构造函数可能会更好

MyClass::MyClass(int a, int b, int c):
    a(a), b(b), c(c)
{}
Run Code Online (Sandbox Code Playgroud)

然后使用vector :: emplace_back

myvector.emplace_back(a, b, c);
Run Code Online (Sandbox Code Playgroud)

  • C++11 中添加了 emplace_back()。对于早期版本,定义构造函数仍然有用,那么你可以这样做:`myvector.push_back(MyClass(a, b, c));` (2认同)