在一行中使用带有"temp"结构的向量推回(如果可能)

cod*_*der 2 c++ struct vector

我有以下代码(butchered使它变得小而具体):

struct myType_t
{
    int a;
    string str;
};
typedef vector<myType_t> dataVect_t; // Just for ease of use

...main(...)
{
    dataVect_t myData;
    myData.push_back((myType_t) {1, "test"}); // THIS IS THE LINE IN QUESTION!
}
Run Code Online (Sandbox Code Playgroud)

编辑:抱歉,这已更正为创建myType_t的实例(不是dataVect_t)

我想将intStringPairVect_t的实例推回到向量中,但我真的不想创建一个变量来执行此操作.我正在做什么似乎编译,但我不是100%确信它是正确的...任何指针(没有双关语意)在这里?

mas*_*oud 5

你要这个

myData.push_back( myType_t { 1, "test" });
                  ~~~~~~~~
Run Code Online (Sandbox Code Playgroud)

它使用统一的初始化器来制作对象myType_t.


如果你没有使用C++ 11,那么你可以定义一个构造函数并通过()以下方式执行相同的操作:

struct myType_t
{
    myType_t(int a, string str) : a(a), str(str){}
    int a;
    string str;
};

myData.push_back( myType_t ( 1, "test" ));
Run Code Online (Sandbox Code Playgroud)