当前位置:实例文章 » 其他实例» [文章]模板类与函数

模板类与函数

发布人:shili8 发布时间:2024-11-15 11:04 阅读次数:0

**模板类与函数**

在C++中,模板(Template)是指可以根据类型参数自动生成代码的机制。模板类(Class Template)和函数(Function Template)是C++编程中的重要概念,它们使得我们能够写出通用的、类型安全的代码。

### 模板类模板类是一种特殊的类,它可以根据类型参数自动生成代码。在使用模板类时,我们需要指定类型参数,这样就能生成相应的代码。

#### 示例:模板类Stack

cpptemplate <typename T>
class Stack {
private:
 T* data;
 int size;

public:
 // 构造函数 Stack(int capacity) : size(0), data(new T[capacity]) {}

 // 销毁函数 ~Stack() { delete[] data; }

 // 入栈函数 void push(T value) {
 if (size ==0) {
 data[size++] = value;
 } else {
 T* temp = new T[size +1];
 for (int i =0; i < size; ++i) {
 temp[i] = data[i];
 }
 delete[] data;
 data = temp;
 data[size++] = value;
 }
 }

 // 出栈函数 T pop() {
 if (size ==0) {
 throw std::out_of_range("Stack is empty");
 } else {
 return data[--size];
 }
 }

 // 查看顶部元素函数 T top() const {
 if (size ==0) {
 throw std::out_of_range("Stack is empty");
 } else {
 return data[size -1];
 }
 }

 // 是否为空函数 bool isEmpty() const { return size ==0; }
};


#### 示例:模板类Vector
cpptemplate <typename T>
class Vector {
private:
 T* data;
 int capacity;
 int size;

public:
 // 构造函数 Vector(int initialCapacity =1) : capacity(initialCapacity), size(0), data(new T[capacity]) {}

 // 销毁函数 ~Vector() { delete[] data; }

 // 扩容函数 void resize(int newCapacity) {
 if (newCapacity < size) {
 throw std::out_of_range("New capacity is less than current size");
 } else {
 T* temp = new T[newCapacity];
 for (int i =0; i < size; ++i) {
 temp[i] = data[i];
 }
 delete[] data;
 data = temp;
 capacity = newCapacity;
 }
 }

 // 添加元素函数 void push_back(T value) {
 if (size == capacity) {
 resize(capacity *2);
 }
 data[size++] = value;
 }

 // 删除最后一个元素函数 T pop_back() {
 if (size ==0) {
 throw std::out_of_range("Vector is empty");
 } else {
 return data[--size];
 }
 }

 // 查看最后一个元素函数 T back() const {
 if (size ==0) {
 throw std::out_of_range("Vector is empty");
 } else {
 return data[size -1];
 }
 }

 // 是否为空函数 bool isEmpty() const { return size ==0; }
};


### 模板函数模板函数是一种特殊的函数,它可以根据类型参数自动生成代码。在使用模板函数时,我们需要指定类型参数,这样就能生成相应的代码。

#### 示例:模板函数max
cpptemplate <typename T>
T max(T a, T b) {
 return (a > b) ? a : b;
}


#### 示例:模板函数swap
cpptemplate <typename T>
void swap(T& a, T& b) {
 T temp = a;
 a = b;
 b = temp;
}


### 总结在本文中,我们学习了C++中的模板类和函数。模板类是一种特殊的类,它可以根据类型参数自动生成代码。在使用模板类时,我们需要指定类型参数,这样就能生成相应的代码。模板函数是一种特殊的函数,它也可以根据类型参数自动生成代码。在使用模板函数时,我们同样需要指定类型参数。这两种机制使得我们能够写出通用的、类型安全的代码,极大地提高了编程效率和代码质量。

相关标签:
其他信息

其他资源

Top