用大括号进行C++部分初始化

C++ partial initialization with curly braces

本文关键字:C++ 初始化      更新时间:2023-10-16

此初始化在标准情况下有效吗?它会创建空向量,以便稍后将数据(vector<Pair<float, string> >s)推入其中吗?

struct A
{
    int a;
    int b;
    vector<vector<Pair<float, string> > > c;
};
A obj = {1, 2};

如果未定义Pair,则可以将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;
}