![]() |
![]() |
Category: algorithms | Component type: function |
template <class Assignable> void swap(Assignable& a, Assignable& b);
int x = 1; int y = 2; assert(x == 1 && y == 2); swap(x, y); assert(x == 2 && y == 1);
[1] The time required to swap two objects of type T will obviously depend on the type; "constant time" does not mean that performance will be the same for an 8-bit char as for a 128-bit complex<double>.
[2] This implementation of swap makes one call to a copy constructor and two calls to an assignment operator; roughly, then, it should be expected to take about the same amount of time as three assignments. In many cases, however, it is possible to write a specialized version of swap that is far more efficient. Consider, for example, swapping two vector<double>s each of which has N elements. The unspecialized version requires 3*N assignments of double, but a specialized version requires only nine pointer assignments. This is important because swap is used as a primitive operation in many other STL algorithms, and because containers of containers (list<vector<char> >, for example) are very common. The STL includes specialized versions of swap for all container classes. User-defined types should also provide specialized versions of swap whenever it is possible to write one that is more efficient than the general version.
Using this site means you accept its terms of use | privacy policy | | | trademark information |
Copyright © 1993-2003 Silicon Graphics, Inc. All rights reserved. | | | contact us |