La mejor manera de escribir el constructor de una clase que tiene un contenedor STL en C ++ 11
class Foo {
std::vector<SomeType> data_;
};
DecirFoo
solo se puede construir haciendo una copia (técnicamente me refiero a una copia o movimiento) de unstd::vector<SomeType>
objeto. ¿Cuál es la mejor manera de escribir constructores paraFoo
?
Mi primer sentimiento, g es
Foo(std::vector<SomeType> data) noexcept : data_(std::move(data)) {};
Al usarlo, la construcción de una instancia requiere 0 o 1 veces de copia vectorial, dependiendo de si el argumento para {datos} es movible o no.