21xrx.com
2024-12-23 01:27:32 Monday
登录
文章检索 我的文章 写文章
函数模板和类模板
2023-07-14 16:43:22 深夜i     --     --
函数模板 类模板 泛型编程 参数化类型 模板实例化

函数模板和类模板是C++中非常重要的概念,它们可以使我们编写可重用的代码,并同时支持多种不同的数据类型。

函数模板可以定义一组通用的代码,其使用方式是通过不同的数据类型来进行实例化。例如,我们可以编写一个通用的排序函数模板,它可以用于各种数据类型的数组排序,例如整数数组、浮点数数组、字符串数组等。

以下是一个简单的函数模板示例:


template <typename T>

void swap(T &a, T &b)

 T temp = a;

 a = b;

 b = temp;

上述代码定义了一个swap函数模板,它通过模板参数T指定了一个通用的类型,可以用于任何类型的变量交换。

类模板是用于定义通用类的模板。与函数模板类似,类模板也可以使用模板参数来指定一个通用类型,并实现相应的数据结构和属性。例如,我们可以编写一个通用的堆栈类模板,它可以用于各种不同的数据类型的堆栈操作。

以下是一个简单的类模板示例:


template <typename T>

class Stack

{

public:

 Stack() : size_(0), capacity_(10)

 {

  data_ = new T[capacity_];

 }

 void push(T item)

 {

  if (size_ >= capacity_)

  {

   T *temp = new T[2 * capacity_];

   std::copy(data_, data_ + size_, temp);

   delete[] data_;

   data_ = temp;

   capacity_ *= 2;

  }

  data_[size_++] = item;

 }

 T pop()

 {

  if (size_ > 0)

   return data_[--size_];

  else

   throw std::out_of_range("Stack is empty!");

 }

private:

 T *data_;

 int size_;

 int capacity_;

};

上述代码定义了一个通用的堆栈类模板,它可以用于任何类型的元素。它包括push和pop等常见的堆栈操作,以及动态扩展堆栈的容量,以适应不同的输入数据。

总之,函数模板和类模板是C++中非常有用的概念,它们可以大大提高代码的可重用性和灵活性。学习并掌握这两个概念,可以对我们的编程技能和实现效率产生深远的影响。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复