vec.size()
возвращает размер vec
и, поскольку он имеет тот же размер, что и vec2
, с вашим кодом нет проблем (кроме некоторой обфускации, конечно). Откуда размер не имеет значения. Если vec.size() == vec2.size() == 3
, все следующее будет делать то же самое:
vec.assign(vec2.begin(),vec2.begin()+ vec.size());
vec.assign(vec2.begin(),vec2.begin()+ vec2.size());
vec.assign(vec2.begin(),vec2.begin()+ 3);
auto x = vec2.size();
vec.assign(vec2.begin(),vec2.begin()+ x);
auto y = x + 42;
vec.assign(vec2.begin(),vec2.begin()+ y-42);
Конечно, использование vec.size()
, когда вы имеете в виду vec2.size()
, «неправильно» в том смысле, что, как только векторы будут иметь другой размер, вы получите undefined поведение для доступа к любому из двух векторов вне пределов.