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;
}
|