温馨提示×

C++ Linux编程中怎样使用模板

小樊
42
2025-12-20 22:36:30
栏目: 编程语言

在C++中,模板是一种泛型编程的工具,它允许程序员编写与数据类型无关的代码。模板可以用于创建函数模板和类模板。下面是如何在Linux环境下使用C++模板的简要指南。

函数模板

函数模板允许你定义一个操作,它可以适用于多种数据类型。下面是一个简单的函数模板示例,它定义了一个交换两个变量的函数:

#include <iostream>

// 函数模板定义
template <typename T>
void swap(T& a, T& b) {
    T temp = a;
    a = b;
    b = temp;
}

int main() {
    int i = 10, j = 20;
    double d1 = 1.5, d2 = 3.5;

    // 使用函数模板
    swap(i, j); // 对于int类型
    swap(d1, d2); // 对于double类型

    std::cout << "i: "<< i << ", j: "<< j << std::endl;
    std::cout << "d1: " << d1 << ", d2: " << d2 << std::endl;

    return 0;
}

要编译上述代码,你可以使用g++编译器:

g++ -o template_example template_example.cpp

然后运行生成的可执行文件:

./template_example

类模板

类模板允许你定义一个类,它的某些部分可以在编译时指定类型。下面是一个简单的类模板示例,它定义了一个栈:

#include <iostream>
#include <vector>

// 类模板定义
template <typename T>
class Stack {
private:
    std::vector<T> elems; // 使用vector来存储元素

public:
    void push(const T& elem) {
        elems.push_back(elem);
    }

    void pop() {
        if (!elems.empty()) {
            elems.pop_back();
        }
    }

    T top() const {
        return elems.back();
    }

    bool empty() const {
        return elems.empty();
    }
};

int main() {
    Stack<int> intStack;
    intStack.push(1);
    intStack.push(2);
    intStack.push(3);

    while (!intStack.empty()) {
        std::cout << intStack.top() << std::endl;
        intStack.pop();
    }

    return 0;
}

同样地,你可以使用g++编译器来编译这个类模板示例:

g++ -o class_template_example class_template_example.cpp

然后运行生成的可执行文件:

./class_template_example

在使用模板时,编译器会为每个使用到的具体类型生成相应的代码。这意味着如果你用不同的类型实例化同一个模板,将会产生不同的函数或类定义。这个过程称为模板实例化。

模板是C++中非常强大的特性,它们广泛应用于标准库中,如STL(Standard Template Library)。熟练使用模板可以提高代码的复用性和灵活性。

0