使用C++自定义类模拟vector的增删改查
时间: 2023-12-25 21:05:35 浏览: 80
你可以创建一个自定义类来模拟vector的增删改查操作。下面是一个简单的示例:
```cpp
#include <iostream>
class MyVector {
private:
int* data; // 存储元素的数组
int size; // 当前元素个数
int capacity; // 数组容量
public:
MyVector() {
size = 0;
capacity = 10;
data = new int[capacity];
}
~MyVector() {
delete[] data;
}
void push_back(int element) {
if (size == capacity) {
expandCapacity();
}
data[size] = element;
size++;
}
void pop_back() {
if (size > 0) {
size--;
}
}
int& operator[](int index) {
if (index >= 0 && index < size) {
return data[index];
}
throw std::out_of_range("Index out of range");
}
int getSize() {
return size;
}
private:
void expandCapacity() {
capacity *= 2;
int* newData = new int[capacity];
for (int i = 0; i < size; i++) {
newData[i] = data[i];
}
delete[] data;
data = newData;
}
};
int main() {
MyVector vec;
vec.push_back(1);
vec.push_back(2);
vec.push_back(3);
std::cout << "Size: " << vec.getSize() << std::endl;
for (int i = 0; i < vec.getSize(); i++) {
std::cout << vec[i] << " ";
}
std::cout << std::endl;
vec.pop_back();
std::cout << "Size: " << vec.getSize() << std::endl;
for (int i = 0; i < vec.getSize(); i++) {
std::cout << vec[i] << " ";
}
std::cout << std::endl;
return 0;
}
```
这个示例中,自定义的MyVector类使用动态数组来存储元素。它提供了push_back()和pop_back()函数来实现尾部插入和删除元素的功能。重载了[]运算符,可以通过索引访问元素。getSize()函数返回当前元素个数。
在主函数中,我们创建了一个MyVector对象`vec`,并使用push_back()函数插入了一些元素。然后通过getSize()函数获取当前元素个数,并通过重载的[]运算符遍历并输出元素。接着使用pop_back()函数删除了最后一个元素,并再次输出当前元素个数和元素列表。
请注意,这只是一个简单的示例,实际应用中可能需要更多的功能和错误处理。
阅读全文