In order to give functions the option to modify the vector I can\'t do
curr = myvec.at( i );
doThis( curr );
doThat( curr );
doStuffWith( curr );
Operator[] might be faster than at, because it isn't required to do bounds checking.
You can make curr a reference to do what you want.
MyClass & curr = myvec.at(i);
You might also do some benchmarking before getting worried. Modern processors can handle thousands of operations per second quite easily.