我尝试将一些结构发送到 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”之前的预期主表达式;
我尝试将一些结构发送到 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”之前的预期主表达式;
在 上定义构造函数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 T
is obj
。
std::list mylist({obj(val1, val2), obj(val3, val4)});
你为什么不给你的结构一个以 a 和 b 作为参数的构造函数?如果你使用初始化列表,这应该和你的旧代码一样快,你可以说
mylist.push_back(obj(a,b));