这个初始化方法是否符合标准?它会创建一个空的vector,以便我稍后可以推入数据(vector<Pair<float,string>>
)吗?
struct A
{
int a;
int b;
vector<vector<Pair<float, string> > > c;
};
A obj = {1, 2};
这个初始化方法是否符合标准?它会创建一个空的vector,以便我稍后可以推入数据(vector<Pair<float,string>>
)吗?
struct A
{
int a;
int b;
vector<vector<Pair<float, string> > > c;
};
A obj = {1, 2};
如果未定义Pair,可以将其更改为std::pair
(#include <utility>
)。
在下面的修正程序中允许部分初始化,它输出1、2、0,因为c
也被初始化为一个无元素向量。
struct A
{
int a;
int b;
vector<vector<std::pair<float, string> > > c;
};
A obj = {1, 2};
int main()
{
cout << obj.a << ", " << obj.b << ", " << obj.c.size() << endl;
return 0;
}
A
是一个聚合体,所以obj.a
被初始化为1
,obj.b
被初始化为2
,而obj.c
从{}
初始化 - 即值初始化。 - T.C.