c++模板类的代码示例
时间: 2024-03-29 11:32:09 浏览: 16
C++模板类是一种通用的类定义,可以用于创建具有不同数据类型的对象。下面是一个简单的C++模板类的代码示例:
```cpp
template <typename T>
class MyTemplateClass {
private:
T data;
public:
MyTemplateClass(T value) {
data = value;
}
T getData() {
return data;
}
void setData(T value) {
data = value;
}
};
```
在上面的示例中,`MyTemplateClass` 是一个模板类,使用 `template <typename T>` 来定义模板参数 `T`。这个模板参数可以在类中的任何地方使用,用于指定数据类型。
你可以使用这个模板类来创建不同类型的对象,例如:
```cpp
MyTemplateClass<int> intObj(5);
int intValue = intObj.getData(); // 获取整数对象的值
MyTemplateClass<double> doubleObj(3.14);
double doubleValue = doubleObj.getData(); // 获取浮点数对象的值
```
在上面的示例中,我们分别创建了一个整数类型和一个浮点数类型的对象,并使用 `getData()` 方法获取它们的值。
相关问题
c++模板元编程 示例代码
C++模板元编程是一种基于编译时计算的高级编程技术。它通过结合C++的模板和元编程技术,允许在编译器执行阶段进行计算和判断,从而减少运行时开销并提高程序的性能。
示例代码中,我将用300字中文介绍一个简单的模板元编程示例。
假设我们需要一个模板类来计算一个数组中的最大值。我们可以使用模板元编程来实现这个功能。
首先,我们定义一个模板类templateMax,接受一个数组作为参数。然后,在这个类中,我们使用模板元编程技术来计算数组的最大值。
示例代码如下:
```cpp
template <typename T, size_t N>
struct templateMax {
static T getMax(const T (&arr)[N]) {
return getMaxHelper(arr, 0);
}
private:
static T getMaxHelper(const T (&arr)[N], size_t index) {
if (index == N - 1) {
return arr[index];
}
T maxRest = getMaxHelper(arr, index + 1);
return arr[index] > maxRest ? arr[index] : maxRest;
}
};
```
在这个示例代码中,我们使用递归的方式实现了计算数组最大值的功能。在getMaxHelper函数中,我们先判断是否达到数组的末尾,如果是,则返回最后一个元素。否则,我们递归地调用getMaxHelper函数,比较当前元素和后面元素的大小,并返回较大的值。
通过这个示例代码,我们可以看到模板元编程的优势。在编译时,编译器会展开模板代码,将递归计算的过程转化为一系列的比较操作,从而实现了在编译时计算数组最大值的功能。
模板元编程可以用于很多领域,例如算法优化、编译器静态检查等。通过灵活运用模板元编程技术,我们可以在编译时进行更多的计算和判断,从而更好地优化程序性能和可靠性。
c++ queue模板类
C++中的queue模板类是一种容器适配器,它基于先进先出(FIFO)的原则来管理元素。它提供了一组用于操作队列的成员函数,包括入队、出队、访问队首元素等操作。
queue模板类位于<queue>头文件中,使用时需要包含该头文件。下面是一些queue模板类的常用成员函数:
1. push(element):将元素element添加到队列的末尾。
2. pop():移除队列中的第一个元素。
3. front():返回队列中第一个元素的引用,但不移除该元素。
4. back():返回队列中最后一个元素的引用,但不移除该元素。
5. empty():检查队列是否为空,如果为空则返回true,否则返回false。
6. size():返回队列中元素的个数。
以下是一个使用queue模板类的示例代码:
```cpp
#include <iostream>
#include <queue>
int main() {
std::queue<int> myQueue;
myQueue.push(10);
myQueue.push(20);
myQueue.push(30);
std::cout << "Front element: " << myQueue.front() << std::endl;
std::cout << "Back element: " << myQueue.back() << std::endl;
myQueue.pop();
std::cout << "Front element after pop: " << myQueue.front() << std::endl;
std::cout << "Size of queue: " << myQueue.size() << std::endl;
return 0;
}
```
输出结果:
```
Front element: 10
Back element: 30
Front element after pop: 20
Size of queue: 2
```