Начиная с C ++ 17, нет никакой разницы.
Есть один нишевый вариант использования, где синтаксис инициализации std::vector = std::vector
весьма полезен (хотя и не для построения по умолчанию): когда нужно предоставить "count, value "initializer для std::vector<int>
члена класса непосредственно в определении класса:
struct S {
std::vector<int> v; // Want to supply `(5, 42)` initializer here. How?
};
Инициализаторы в классе поддерживают только синтаксис =
или {}
, что означает, что мы не можем просто сказать
struct S {
std::vector<int> v(5, 42); // Error
};
Если мы используем
struct S {
std::vector<int> v{ 5, 42 }; // or = { 5, 42 }
};
, компилятор будет интерпретировать его как список значений вместо пары «count, value», а это не то, что нам нужно.
Итак, один правильный способ сделать это -
struct S {
std::vector<int> v = std::vector(5, 42);
};