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

C++ Vector Initialization List vs. Assignment

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


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

    vector<int> v_2 = {3, 4, 5};

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

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

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

这是direct-list-initialization, a form of direct-initialization

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

    vector<int> v_2 = {3, 4, 5};

这是copy-list-initialization。在这种情况下,与 direct-list-initialization.

没有区别

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

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