【发布时间】:2019-09-06 01:50:58
【问题描述】:
有什么区别:
auto x = vector<int>();
和
vector<int> x;
这两个声明是等价的,还是在运行时复杂度上有一些不同?
【问题讨论】:
-
第一个导致调用默认构造函数和调用移动构造函数。第二个导致调用默认构造函数。即使编译器对两者都进行了优化以生成相同的程序集,第二个也是为了提高可读性。
-
请注意,并非所有类都相同。例如。
std::array<int,10>。第一个将初始化为全 0,第二个可能不会。
标签: c++ initialization language-lawyer stdvector