结构初始化为参数

时间:2010-09-24 10:38:50

标签: c++ list structure initializing

我尝试将一些结构发送到STL列表中;

struct obj {
  int a;
  int b;
}

list < struct obj> mylist;

struct obj a  = { 0, 1}; 
mylist.push_back ( a);

有没有其他方法可以初始化push_back的参数? 例如:

mylist.push_back ( struct obj a ={0, 1});

g ++告诉我:在“struct”之前预期的primary-expression;

2 个答案:

答案 0 :(得分:4)

struct obj上定义构造函数:

obj::obj(int a, int b) // : initializers
{
 // Implementation
}

使用

int val1, val2;
mylist.push_back(obj(val1, val2));

C ++ 0x有new ways to initialize inline。我已经看到包括来自Stroustrup的语句,可以使用std::initializer_list<T>初始化STL容器,在这种情况下,Tobj时,它看起来就像这样。

std::list mylist({obj(val1, val2), obj(val3, val4)});

答案 1 :(得分:0)

为什么不给你的struct一个带a和b作为参数的构造函数?如果您使用初始化列表,这应该与旧代码一样快,您可以说

mylist.push_back(obj(a,b));