Я хотел бы знать, есть ли разница в следующих двух типах инициализации std::vector
в С++ 11 и более поздних версиях.
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 использует второй тип, поэтому я подумал, имеет ли такая инициализация какое-либо преимущество.
В общем, я хочу знать, имеет ли одна инициализация конкретное техническое преимущество над другим, или если одна инициализация считается лучшей практикой, а другая - нет, и если да, то почему.
В частности, меня беспокоит, есть ли у инициализации списка копий дополнительные накладные расходы из-за временных объектов и копирования?