一.什么是C++中的template
C++ 中的模板(Template)是一种通用编程技术,用于实现泛型编程。模板允许在编译时生成代码,以适应不同的数据类型和算法需求。通过使用模板,可以编写可重用的代码,提高代码的灵活性和效率。
二.会以什么样的方式体现出他的简便性呢?
1.函数模板:函数模板是一种通用的函数定义,可以用于处理多种数据类型。通过在函数定义中使用占位符类型(通常用 typename
或 class
关键字表示),可以实现对不同类型的参数进行通用操作。函数模板的定义通常以 template
关键字开头,后跟模板参数列表和函数定义。
1.在之前C语言中,我们需要对大量不同类型的变量进行交换时,我们会需要多个swap函数,如int,double了
void swapInt(int* a, int* b) { int temp = *a; *a = *b; *b = temp; } void swapFloat(float* a, float* b) { float temp = *a; *a = *b; *b = temp; } //....
但是在C++中,可以使用函数模板来交换两个变量,并且不用对每一个类型都需要写对应的交换函数,如下:
template <typename T> void myswap(T &a, T &b) { T tmp = a; a = b; b = a; }
测试代码如下:
int main() { int a = 0; int b = 1; cout << "a=" << a << ",b=" << b << endl; myswap(a, b); cout << "a=" << a << ",b=" << b << endl; cout << "---------------------" << endl; double c = 1.99999; double d = 3.1415926; cout << "c=" << c << ",d=" << c << endl; myswap(c, d); cout << "c=" << c << ",d=" << d << endl; cout << "---------------------" << endl; string str1 = "hello gzx"; string str2 = "hellp mxb"; cout<<"str1="<<str1<<",str2="<<str2<<endl; myswap(str1, str2); cout << "str1=" << str1 << ",str2=" << str2 << endl; }
大家自己测试一下吧qaq
2.类模板类模板是一种通用的类定义,可以用于创建多种类型的对象。类模板允许在类定义中使用占位符类型,以实现对不同类型的成员变量和成员函数进行通用操作。类模板的定义通常以 template
关键字开头,后跟模板参数列表和类定义。
template <typename T> class Stack { private: T* data; int top; public: Stack() { data = new T[100]; top = -1; } void push(T value) { data[++top] = value; } T pop() { return data[top--]; } }; int main() { Stack<int> intStack; // 创建一个存储整数的栈对象 intStack.push(1); intStack.push(2); intStack.push(3); int result1 = intStack.pop(); // 弹出栈顶元素,返回 3 Stack<double> doubleStack; // 创建一个存储浮点数的栈对象 doubleStack.push(1.1); doubleStack.push(2.2); doubleStack.push(3.3); double result2 = doubleStack.pop(); // 弹出栈顶元素,返回 3.3 return 0; }