在C++中实现泛型向量类可以通过使用模板来实现。模板是C++中的一种特殊机制,可以实现通用的代码,使得代码可以适用于不同的数据类型。
泛型向量类是一个可以存储任意类型元素的动态数组。它可以动态调整大小,并提供了一系列的操作方法,如添加元素、删除元素、访问元素等。
以下是一个示例的泛型向量类的实现:
template <typename T>
class Vector {
private:
T* data; // 存储元素的数组
int size; // 当前元素个数
int capacity; // 数组容量
public:
// 构造函数
Vector() {
size = 0;
capacity = 10;
data = new T[capacity];
}
// 析构函数
~Vector() {
delete[] data;
}
// 添加元素
void push_back(const T& element) {
if (size == capacity) {
// 扩展数组容量
capacity *= 2;
T* newData = new T[capacity];
for (int i = 0; i < size; i++) {
newData[i] = data[i];
}
delete[] data;
data = newData;
}
data[size++] = element;
}
// 删除元素
void pop_back() {
if (size > 0) {
size--;
}
}
// 获取元素个数
int getSize() const {
return size;
}
// 获取指定位置的元素
T& operator[](int index) {
return data[index];
}
};
这个泛型向量类使用了模板参数 typename T
,表示可以接受任意类型的数据。在类的内部,使用 T* data
来存储元素的数组,int size
来记录当前元素个数,int capacity
来记录数组容量。
类中提供了一些常用的操作方法,如 push_back
用于添加元素,pop_back
用于删除元素,getSize
用于获取元素个数,operator[]
用于访问指定位置的元素。
使用示例:
int main() {
Vector<int> vec; // 创建一个存储整数的向量
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
for (int i = 0; i < vec.getSize(); i++) {
cout << vec[i] << " ";
}
// 输出:1 2 3
vec.pop_back();
cout << vec.getSize() << endl;
// 输出:2
return 0;
}
这个示例展示了如何使用泛型向量类来存储整数,并进行一些基本操作。
腾讯云相关产品和产品介绍链接地址:
请注意,以上仅为示例,实际选择云计算品牌商和产品应根据具体需求和实际情况进行评估和选择。
领取专属 10元无门槛券
手把手带您无忧上云