In the few cases where you can't pass by reference and must pass by value such as pushing onto a vector, the compiler generates a very efficient move of the object onto the stack. When referencing an object in an STL container, an iterator is a pointer, so there is no difference in ...