Если мы игнорируем любые оптимизации, выполняемые компилятором, между функциями, вызываемыми каждой версией, есть конкретное различие.
В методе 1, поскольку вы создаете вектор внутри цикла, его конструктор будет вызываться один раз (в частности, его конструктор копирования), а его деструктор будет вызываться один раз для каждой итерации цикла. Таким образом, приблизительная стоимость составляет N вызовов конструктора копирования + N вызовов деструктора.
В методе 2, поскольку вектор уже существует в цикле for, вместо этого будет вызываться его оператор присваивания копии. Таким образом, его конструктор вызывается один раз, его деструктор вызывается один раз, а его оператор присваивания копии вызывается N раз. Примерная стоимость - 1 вызов конструктора копирования + 1 вызов деструктора + N вызовов оператора назначения копирования.
В итоге они примерно одинаковы с точки зрения объема работы. Каждый вызов оператора присваивания копии требует выделения одного массива и освобождения другого; с другой стороны, вызов конструктора копирования выделяет один массив, а деструктор освобождает один.
Я бы предпочел метод 1 просто потому, что он более точно отражает то, что вы пытаетесь сказать - вектор действительно временный и не должен существовать за рамками цикла.