the two operators are for the two possible uses, lhs of an equation and rhs of an equation:

the & is for the lhs case, where we want to return a reference so that we can change the address:

v(1) = 1.0;

the non & that ends with const is for the rhs (the const at the end means we are not changing the vector in the method)

double a = v(1);