我尝试将一些结构发送到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;
答案 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容器,在这种情况下,T
为obj
时,它看起来就像这样。
std::list mylist({obj(val1, val2), obj(val3, val4)});
答案 1 :(得分:0)
为什么不给你的struct一个带a和b作为参数的构造函数?如果您使用初始化列表,这应该与旧代码一样快,您可以说
mylist.push_back(obj(a,b));