Здесь есть разные варианты. Вы можете передать вектор по ссылке, которая является самой простой и понятной в коде:
void function( std::vector<type>& v )
Теперь в некоторых магазинах руководство по стилю требует, чтобы, если вы собираетесь изменить аргумент, вы передаете его по указателю, поскольку это делает его явным в месте вызова. В этом случае есть разные варианты звонить operator[]
:
void function( std::vector<type> *v ){
(*v)[0] = .... // dereference first
v->operator[](0) = .... // explicitly cal the operator
std::vector<type>& vr =*v;
vr[0] = .... // create reference and use that
Первые два эквивалентны, с первым, возможно, легче читать. Второй эквивалентен первому в том, что он разыменовывает указатель, а затем обращается к оператору, но вы явно присваиваете ссылку для ссылки, поэтому ее можно повторно использовать в функции без необходимости разыменования при любом использовании. Хотя это технически создает дополнительную переменную, компилятор, скорее всего, оптимизирует ссылку.