请举出C++泛型编程和模板的实际使用场景并给出源码
C++泛型编程和模板的实际使用场景有很多,以下是两个常见的示例:
- 容器类的实现:泛型编程和模板在实现容器类(如vector、list、map等)时非常常见。通过使用模板,可以实现通用的容器类,使其能够存储任意类型的数据。下面是一个简单的vector类的示例代码:
template <typename T>
class Vector {
public:
Vector() : mData(nullptr), mSize(0), mCapacity(0) {}
~Vector() { delete[] mData; }
void push_back(const T& value) {
if (mSize >= mCapacity) {
reserve(mCapacity * 2 + 1);
}
mData[mSize++] = value;
}
void reserve(int newCapacity) {
if (newCapacity <= mCapacity) {
return;
}
T* newData = new T[newCapacity];
for (int i = 0; i < mSize; i++) {
newData[i] = mData[i];
}
delete[] mData;
mData = newData;
mCapacity = newCapacity;
}
private:
T* mData;
int mSize;
int mCapacity;
};
在上述代码中,使用了模板类Vector来实现一个通用的动态数组。该类可以存储任意类型的数据,并提供了push_back和reserve等常用操作。
- 算法函数的实现:泛型编程和模板还常用于实现通用的算法函数,以适应不同类型的数据。下面是一个简单的排序函数
bubble_sort的示例代码:
template <typename T>
void bubble_sort(T arr[], int size) {
for (int i = 0; i < size - 1; i++) {
for (int j = 0; j < size - i - 1; j++) {
if (arr[j] > arr[j + 1]) {
std::swap(arr[j], arr[j + 1]);
}
}
}
}
在上述代码中,使用了模板函数bubble_sort来实现冒泡排序算法。该函数可以接受任意类型的数组,并对其进行排序。
以上是两个常见的C++泛型编程和模板的实际使用场景,并给出了相应的源码示例。请注意,这只是简单的示例代码,实际应用中可能需要考虑更多的边界情况和性能优化
原文地址: https://www.cveoy.top/t/topic/hXln 著作权归作者所有。请勿转载和采集!