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)的提示。
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)。