C++模板函數

</pre><pre name="code" class="cpp">
#include <iostream>
#include <string>

void printstring(const std::string & str)
{
	std::cout << str << std::endl;
}

template<class T> void print(const T & var)
{
	std::cout << var << std::endl;
}
int main()
{
	std::string str("hello world!");
	printstring(str);
	std::string str2("uestc");
	print(str2);
	int number = 2048;
	print(number);

	system("pause");
	exit(0);
}




#include <iostream>

int min_int(int a, int b, int c)
{
	int min;
	min = a;
	if (min > b)
		min = b;
	if (min > c)
		min = c;
	return min;
}

float min_float(float a, float b, float c)
{
	float min;
	min = a;
	if (min > b)
		min = b;
	if (min > c)
		min = c;
	return min;
}
char min_char(char a, char b, char c)
{
	char min;
	min = a;
	if (min > b)
		min = b;
	if (min > c)
		min = c;
	return min;
}
template<class T> T min(T t1, T t2, T t3)
{
	T min;
	min = t1;
	if (min > t2)
		min = t2;
	if (min > t3)
		min = t3;
	return min;
}
int main()
{
	int int_min = min_int(10, 20, 40);
	std::cout << "int_min(10, 20, 40) = " << int_min << std::endl;

	float float_min = min_float(10.2, 34.4, 3.9);
	std::cout << "float_min(10.2, 34.4, 3.9) = " << float_min << std::endl;

	char char_min = min_char('c', 'a', 'z');
	std::cout << "char_min('c', 'a', 'z') = " << char_min << std::endl;
	
	std::cout << "\n下面是用模板來輸出最小值\n";

	std::cout << "min(10, 20, 40) = " << min(10, 20, 40) << std::endl;
	std::cout << "min(10.2, 34.4, 3.9) = " << min(10.2, 34.4, 3.9) << std::endl;
	std::cout << "min('c', 'a', 'z') = " << min('c', 'a', 'z') << std::endl;

	system("pause");
	exit(0);
}


#include <iostream>

int min_int(int a, int b, int c)
{
	int min;
	min = a;
	if (min > b)
		min = b;
	if (min > c)
		min = c;
	return min;
}

float min_float(float a, float b, float c)
{
	float min;
	min = a;
	if (min > b)
		min = b;
	if (min > c)
		min = c;
	return min;
}
char min_char(char a, char b, char c)
{
	char min;
	min = a;
	if (min > b)
		min = b;
	if (min > c)
		min = c;
	return min;
}
template<class T> T min(T t1, T t2, T t3)
{
	T min;
	min = t1;
	if (min > t2)
		min = t2;
	if (min > t3)
		min = t3;
	return min;
}

const char * min(char * str1, char * str2, char * str3)
{
	char * min;
	min = str1;
	if (strcmp(min, str2) > 0)
		min = str2;
	if (strcmp(min, str3) > 0)
		min = str3;
	return min;
}

int main()
{
	int int_min = min_int(10, 20, 40);
	std::cout << "int_min(10, 20, 40) = " << int_min << std::endl;

	float float_min = min_float(10.2, 34.4, 3.9);
	std::cout << "float_min(10.2, 34.4, 3.9) = " << float_min << std::endl;

	char char_min = min_char('c', 'a', 'z');
	std::cout << "char_min('c', 'a', 'z') = " << char_min << std::endl;
	
	std::cout << "\n下面是用模板來輸出最小值\n";

	std::cout << "min(10, 20, 40) = " << min(10, 20, 40) << std::endl;
	std::cout << "min(10.2, 34.4, 3.9) = " << min(10.2, 34.4, 3.9) << std::endl;
	std::cout << "min('c', 'a', 'z') = " << min('c', 'a', 'z') << std::endl;
	std::cout << "\n比較字符串的大小,編譯器會調用特殊定義的函數min(char *, char *, char *)\n";
	std::cout << " min(\"yao\", \"xiao\", \"kui\") = " << min("yao", "xiao", "kui") << std::endl;
	system("pause");
	exit(0);
}


#include <iostream>
#include <string>
#include <sstream>
#include <complex>

template<class T>
T fromString(const std::string & s)
{
	std::istringstream is(s);
	T t;
	is >> t;
	return t;
}

template<class T>
std::string toString(const T & t)
{
	std::ostringstream s;
	s << t;
	return s.str();
}

int main()
{
	using namespace std;
	cout << "將其它類型的變量轉換爲string類型輸出\n";
	int i = 1024;
	cout << "i = " << toString(i) << endl;
	float x = 29.3;
	cout << "x = " << toString(x) << endl;
	complex<float> c(1.0, 2.0);
	cout << "c = " << toString(c) << endl;
	cout << "\n將string類型的變量轉換爲其它的類型輸出\n";
	i = fromString<int>(string("1024"));
	cout << "i = " << i << endl;
	x = fromString<float>(string("20.33"));
	cout << "x = " << x << endl;
	c = fromString<complex<float>>(string("(2.3, 3.5)"));
	cout << "c = " << c << endl << endl;

	system("pause");
	exit(0);
}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章