Что это +1 в 'N + 1'?
Одно выделение для создания базового массива для нового вектора, затем N выделений, по одному для каждой из N строкв векторе.
Как автор внезапно приходит к следующему руководству
Он утверждает, что вместо явно делает копию внутриfunction,
std::vector<std::string>
sorted2(std::vector<std::string> const& names) // names passed by reference
{
std::vector<std::string> r(names); // and explicitly copied
std::sort(r);
return r;
}
вы должны позволить компилятору сделать копию при передаче аргументов функции,
std::vector<std::string>
sorted2(std::vector<std::string> names) // names passed by value
{ // and implicitly copied
std::sort(names);
return names;
}