C++——模板

C++ 模板是一种用于创建通用代码的机制,可以在编译时将特定的数据类型参数传递给代码,从而生成具体的代码。使用模板,可以编写通用的算法和数据结构,以便在多个项目和数据类型上重用它们。

C++ 模板有两种类型:函数模板和类模板。

函数模板允许在函数定义中使用一个或多个类型参数,从而创建通用函数。例如,下面是一个简单的函数模板,用于计算两个值的最大值:

template <typename T>
T max(T a, T b) {
    return a > b ? a : b;
}

这个函数模板中的 typename T 表示一个类型参数,它在函数体中用作类型 T 的占位符。可以使用任何可比较的类型调用这个函数模板,例如:

int a = 5, b = 3;
std::cout << max(a, b) << std::endl; // 输出 5

double x = 3.14, y = 2.71;
std::cout << max(x, y) << std::endl; // 输出 3.14

类模板是用于创建通用类的机制。类模板定义中的一个或多个类型参数允许在编译时指定具体的数据类型。例如,下面是一个简单的类模板,用于实现一个通用的栈数据结构:

template <typename T>
class Stack {
public:
    void push(T value) { m_data.push_back(value); }
    T pop() {
        T value = m_data.back();
        m_data.pop_back();
        return value;
    }
private:
    std::vector<T> m_data;
};

这个类模板中的 typename T 表示一个类型参数,它在类定义中用作类型 T 的占位符。可以使用任何数据类型实例化这个类模板,例如:

Stack<int> intStack;
intStack.push(1);
intStack.push(2);
intStack.push(3);
std::cout << intStack.pop() << std::endl; // 输出 3

Stack<std::string> stringStack;
stringStack.push("Hello");
stringStack.push("world");
std::cout << stringStack.pop() << std::endl; // 输出 "world"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值