Here is the classic swap
function implemented in four different styles:
using references, using pointers, using templates with references, and using
the Standard Template Library swap
from <algorithm>
.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
// arrayptr/swap-ref-ptr-stl.cpp - Versions of swap // 2004-01-26 Rodenbach - Fred Swartz #include <iostream> #include <algorithm> using namespace std; //====================================== prototypes void swap_ref(int& a, int& b); void swap_ptr(int* a, int* b); //=========================================== swap_tpl template <class T>void swap_tpl(T& a, T& b) { T temp = a; a = b; b = temp; } //=========================================== main int main() { int x = 1; int y = 2; //std::cout << "start : x = " << x << ", y = " << y << std::endl; std::swap(x, y); cout << "swap : x = " << x << ", y = " << y << std::endl; swap_ref(x, y); cout << "swap_ref: x = " << x << ", y = " << y << std::endl; swap_ptr(&x, &y); cout << "swap_ptr: x = " << x << ", y = " << y << std::endl; swap_tpl(x, y); cout << "swap_tpl: x = " << x << ", y = " << y << std::endl; system("PAUSE"); } //=========================================== swap_ref void swap_ref(int& a, int& b) { int temp = a; a = b; b = temp; } //=========================================== swap_ptr void swap_ptr(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } |