专业编程基础技术教程

网站首页 > 基础教程 正文

C++ 模板编程详解(c++模板教程)

ccvgpt 2024-07-21 17:19:52 基础教程 15 ℃

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

  1. 函数模板示例

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

C++ 模板编程详解(c++模板教程)

#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++中强大的特性之一,它可以极大地提高代码的复用性和灵活性。

Tags:

最近发表
标签列表