C++模板编程:从入门到精通

发表时间: 2024-05-15 09:50

当然可以,以下是一些更详细的C++模板编程示例:

  1. 函数模板示例

假设我们想要实现一个计算两个数之和的函数模板:

#include <iostream>// 函数模板定义template <typename T>T sum(T a, T b) {    return a + b;}int main() {    // 使用函数模板计算整数之和    int intSum = sum<int>(3, 5);    std::cout << "整数之和:" << intSum << std::endl;    // 使用函数模板计算浮点数之和    double floatSum = sum<double>(3.5, 5.7);    std::cout << "浮点数之和:" << floatSum << std::endl;    return 0;}
  1. 类模板示例

我们可以定义一个简单的列表类模板,它可以存储任意类型的元素:

#include <iostream>#include <vector>// 类模板定义template <typename T>class MyList {private:    std::vector<T> listElements;public:    void add(const T& element) {        listElements.push_back(element);    }    T get(size_t index) const {        if (index >= listElements.size()) {            throw std::out_of_range("Index out of range");        }        return listElements[index];    }    size_t size() const {        return listElements.size();    }};int main() {    // 使用类模板创建一个整数列表    MyList<int> myIntList;    myIntList.add(1);    myIntList.add(2);    myIntList.add(3);    for (size_t i = 0; i < myIntList.size(); ++i) {        std::cout << "整数列表元素:" << myIntList.get(i) << std::endl;    }    // 使用类模板创建一个浮点数列表    MyList<float> myFloatList;    myFloatList.add(1.5f);    myFloatList.add(2.5f);    myFloatList.add(3.5f);    for (size_t i = 0; i < myFloatList.size(); ++i) {        std::cout << "浮点数列表元素:" << myFloatList.get(i) << std::endl;    }    return 0;}
  1. 模板特化示例

有时候,我们可能需要对某些特定类型进行特殊处理。这时,可以使用模板特化来实现:

#include <iostream>// 函数模板定义template <typename T>T max(T a, T b) {    return (a > b) ? a : b;}// 模板特化,针对char类型template <>char max(char a, char b) {    // 这里可以添加针对char类型的特殊逻辑    return (a > b) ? a : b;}int main() {    // 使用函数模板计算整数之和    int intMax = max<int>(3, 5);    std::cout << "整数最大值:" << intMax << std::endl;    // 使用函数模板计算浮点数之和    double floatMax = max<double>(3.5, 5.7);    std::cout << "浮点数最大值:" << floatMax << std::endl;    // 使用模板特化计算char类型的最大值    char charMax = max<char>('A', 'Z');    std::cout << "char类型最大值:" << charMax << std::endl;    return 0;}

这些示例展示了如何在C++中使用模板编程来创建可重用和类型安全的代码。模板编程是C++中强大的特性之一,它可以极大地提高代码的复用性和灵活性。