嵌入式AI学习打卡 05 现代C++ 统一初始化

40 阅读1分钟

适合谁看:资深的嵌入式系统底层专家。技能栈(C、SoC、Bootloader、驱动、系统移植、DSP优化、Cache调优、功耗分析)是芯片设计的核心和基础,具备从硬件(SoC)底层固件(ROM Bootloader)再到操作系统层(驱动、RTOS)的全栈知识和实战经验,希望向嵌入式场景的AI部署方向拓展,寻求新的发展空间。


现代C++支持对任意类型使用括号初始化,这在初始化array、vector这类容器的时候非常好用。

比如我们定义一个class S

struct S
{
    std::string name;
    float num;
    S(std::string s, float f) : name(s), num(f) {}
};

它本身有两个成员变量,可以用下面的方式初始化:

    // C-style initialization
    S s1("Norah", 2.7);
    S s2("Frank", 3.5);
    S s3("Jeri", 85.9);

然后用一个vector来装这三个类

    std::vector<S> v;
    v.push_back(s1);
    v.push_back(s2);
    v.push_back(s3);

这就是经典的C风格的初始化方法,现代C++通常像下边这样初始化:

    // Modern C++:
    std::vector<S> v;
    std::vector<S> v2 {s1, s2, s3};

或者这样:

    // or...
    std::vector<S> v3{ {"Norah", 2.7}, {"Frank", 3.5}, {"Jeri", 85.9} };
}

看着就简洁多了