64,648
社区成员
发帖
与我相关
我的任务
分享
/*
* PRG_8_11.cpp
*
* Created on: 2020/07/19
* Author: Ruby
*/
#include <iostream>
#include <fstream>
#include <String>
#include "PRG_common.hpp"
using namespace std;
// Function declaration
void vSwapData( const char **data1, const char **data2 );
void vShowSwapData( const char *data1, const char *data2 );
template <class T>
void vSwapData( T &data1, T &data2 );
template <class T>
void vSwapData( T *data1, T *data2, int array_len = 1 );
template <typename T>
void vShowSwapData( T &data1, T &data2 );
template <typename T>
void vShowSwapData( T *data1, T *data2, int array_len );
// Main Function
int main_Prgram8_11()
{
const char *chr1 = "CHAR_001";
const char *chr2 = "CHAR_002";
double data1 = 1234;
double data2 = 5678;
int array1[] = { 1, 2 , 3, 4 };
int array2[] = { 21, 22 , 23, 24 };
cout << "main_Prgram8_11 Start." << endl; // prints My Honey
cout <<"----------------------------" << endl;
template void vSwapData<double>( double &,double & );
vShowSwapData( data1, data2 );
vSwapData( data1, data2 );
vShowSwapData( data1, data2 );
cout <<"----------------------------" << endl;
vShowSwapData( chr1, chr2 );
vSwapData( (const char **)(&chr1), (const char **)(&chr2) );
vShowSwapData( chr1, chr2 );
cout <<"----------------------------" << endl;
vShowSwapData( array1, array2,( sizeof(array1)/ sizeof (array1[0]) ) );
vSwapData( array1, array2, ( sizeof(array1)/ sizeof (array1[0]) ) );
cout <<"----------------------------" << endl;
vShowSwapData( array1, array2, ( sizeof(array1)/ sizeof (array1[0]) ) );
cout << "main_Prgram8_8 End." << endl; // prints My Honey
return 0;
}
//Templete swap function
template <class T>
void vSwapData( T &data1, T &data2 )
{
T temp;
temp = data1;
data1 = data2;
data2 = temp;
return;
}
//Show Templete swap function
template <class T>
void vShowSwapData( T &data1, T &data2 )
{
cout<<endl;
cout << "Data1 = " << data1 << endl;
cout << "Data2 = " << data2 << endl;
return;
}
//Templete swap function for array
template <typename T>
void vSwapData( T *data1, T *data2, int array_len )
{
int cnt;
if ( array_len <= 0 )
{
/* nothing to do */
}
else
{
for ( cnt = 0; cnt < array_len; cnt++ )
{
vSwapData( data1[ cnt ], data2[ cnt ] );
}
}
return;
}
//Show Templete swap function for array
template <typename T>
void vShowSwapData( T *data1, T *data2, int array_len )
{
int cnt;
if ( array_len <= 0 )
{
/* nothing to do */
}
else
{
cout << endl << "Element count = " << array_len;
for ( cnt = 0; cnt < array_len; cnt++ )
{
cout << endl << "Element[ " << cnt << " ]";
vShowSwapData( data1[ cnt ], data2[ cnt ] );
}
}
return;
}
//const char swap
void vSwapData( const char **data1, const char **data2 )
{
const char *temp;
temp = *data1;
*data1 = *data2;
*data2 = temp;
return;
}
//Display const char swap
void vShowSwapData( const char *data1, const char *data2 )
{
cout<<endl;
cout << "Char Data1 = " << data1 << endl;
cout << "Char Data2 = " << data2 << endl;
}