C++ 向量初始化列表与赋值

zar*_*sht 5 c++ vector initialization-list

在 C++ 中,以下两种初始化向量的方法之间有什么技术区别?


    vector<int> v_1 {0, 1, 2};

    vector<int> v_2 = {3, 4, 5};
Run Code Online (Sandbox Code Playgroud)

第一个是初始化列表。第二个是什么?

我很欣赏有关正确术语以及参考文档和不同标准版本(C++98 与 C++11)的提示。

rus*_*tyx 6

    vector<int> v_1 {0, 1, 2};
Run Code Online (Sandbox Code Playgroud)

这是直接列表初始化,直接初始化的一种形式。

v_1使用提供的值构造一个对象。

    vector<int> v_2 = {3, 4, 5};
Run Code Online (Sandbox Code Playgroud)

这是复制列表初始化在这种情况下,与direct-list-initialization没有区别。

不过,仍然存在细微的语义差异,因为复制初始化排除了显式构造函数。

C++11 中引入了列表初始化语法(版本 1 和版本 2)。