0

我尝试将一些结构发送到 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”之前的预期主表达式;

4

2 回答 2

4

在 上定义构造函数struct obj

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

利用

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

C++0x 有初始化 inline 的新方法。我已经看到了包括Stroustrup在内的声明,即 STL 容器可以使用std::initializer_list<T>在这种情况下进行初始化,在你的情况下它看起来像这样 where Tis obj

std::list mylist({obj(val1, val2), obj(val3, val4)});
于 2010-09-24T10:47:57.560 回答
0

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

mylist.push_back(obj(a,b));
于 2010-09-24T10:48:32.057 回答