I know that at() is slower than [] because of its boundary checking, which is also discussed in similar questions like C++ Vector at/[] operator sp
at()
[]
at can be clearer if you have a pointer to the vector:
at
return pVector->at(n); return (*pVector)[n]; return pVector->operator[](n);
Performance aside, the first of these is the simpler and clearer code.