Swap and the standard template library
The swap operation is widely used in the C++ standard library. All Standard Template Library (STL) containers provide swap functionality, and there is a non-member function template, std::swap
. There are also uses of swap in STL algorithms. The standard library is also a template for implementing custom features that resemble standard ones.
Therefore, we’ll begin our study of the swap operation with a look at the functionality provided by the standard.
Swap and STL containers
Conceptually, swap is equivalent to the following operation:
template <typename T> void swap(T& x, T& y) { T tmp(x); x = y; y = tmp; }
After the swap()
is called, the contents of the x
and y
objects are swapped. This, however, is probably the worst possible way to actually implement swap. The first and most obvious problem with this implementation is that it copies both objects unnecessarily (it actually does three...