我想知道在C++11及以后版本中以下两种std::vector
初始化方式是否有差异。
std::vector<int> v1 {1, 2, 3, 4, 5};
std::vector<int> v2 = {1, 2, 3, 4, 5};
这是一个完整的代码示例,可以正常工作。
#include <iostream>
#include <vector>
int main()
{
std::vector<int> v1 {1, 2, 3, 4, 5};
std::vector<int> v2 = {1, 2, 3, 4, 5};
std::cout << v1.size() << '\n';
std::cout << v2.size() << '\n';
}
我看到两种初始化方式都会导致相同的结果。
在http://en.cppreference.com/w/cpp/container/vector 的例子中使用了第二种方式,这让我想知道这种初始化方式是否有任何优点。
总的来说,我想知道其中一种初始化方式是否具有特定的技术优势,或者其中一种初始化方式是否被视为最佳实践而另一种不是,如果是的话,为什么。
特别是,我担心的是复制列表初始化是否由于临时对象和复制而具有额外的开销?
vector
来说,这两个东西的行为完全相同。 - M.M