C++之泛型编程

 关于C++STL刷题知识点汇总文章可以参考:

C++刷题基础知识(栈、队列、hash、STL、基础函数等)---持续更新-优快云博客

1. 泛型编程template

1.1 泛型编程基础

基本模式:

  • C++泛型编程是一种编程范式,它允许程序员编写可适用于多种数据类型的代码。泛型编程的核心思想是将数据类型参数化,即通过使用类型参数来代替具体的数据类型,以实现代码的通用性和复用性。
  • 在C++中,泛型编程主要通过模板来实现。模板是一种编译时多态性,它允许程序员定义与数据类型无关的函数或类,而将具体的数据类型作为模板参数在编译时进行替换。
  • C++模板可以分为函数模板和类模板两种类型。函数模板定义了一组与数据类型无关的函数,而类模板定义了一组与数据类型无关的类。在函数模板中,类型参数可以用于函数的返回类型、形参类型和函数体中的变量类型。在类模板中,类型参数可以用于类的成员变量类型、成员函数返回类型和形参类型。

意义:

  • 泛型编程可以提高代码的复用性和可维护性,同时也可以提高代码的可读性和可理解性。通过使用泛型编程,程序员可以编写出更加通用的代码,而无需针对不同的数据类型编写不同的代码。此外,泛型编程还可以提高代码的可测试性和可扩展性,从而降低代码的维护成本和提高代码的生命周期。

1.2 泛型编程函数与类用例

分别定义泛型编程里的函数模板、类模板以及常用的STL库迭代器。

//1.函数模版
template <typename T>  
T add(T x, T y) {  
    return x + y;  
}

//2.类模板
template <typename T>  
class MyClass {  
public:  
    T value;  
    void setValue(T val) {  
        value = val;  
    }  
};

//3.泛型迭代器
template <typename T>  
class Iterator {  
public:  
    T* ptr;  
    Iterator(T* ptr) : ptr(ptr) {}  
    bool hasNext() {  
        return ptr != nullptr;  
    }  
    T next() {  
        T val = *ptr;  
        ptr++;  
        return val;  
    }  
};

注意:template <typename T>  的含义是C++中的一个模板声明,其中typename是一个关键字,用于指示编译器将后面的类型名称视为类型参数。

在模板声明中,T是一个类型参数,它表示一个占位符,可以代表任何类型。当使用模板函数或类时,可以将具体的类型替换为T,以实现代码的通用性和复用性。

 关于C++STL刷题知识点汇总文章可以参考:

C++刷题基础知识(栈、队列、hash、STL、基础函数等)---持续更新-优快云博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值