用vs2019仿写向量类vector,至少实现:push_back()在表尾插入元素、insert()在向量的某位置插入元素、clear()清空向量中的元素、size()返回向量中元素的个数、empty()判断是否为空、erase()删除元素等功能。不用仿写迭代器。
时间: 2023-06-09 22:08:48 浏览: 78
好的,我了解你的要求了。为了实现仿写vector类,我们需要创建类模板,并在类中定义所需的成员函数。以下是一个示例代码,实现了push_back、insert、clear、size、empty和erase函数:
```
template <typename T>
class Vector {
private:
T* data; //存储向量元素的数组
int capacity; //当前向量的存储容量
int length; //向量中元素的个数
public:
//默认构造函数
Vector() {
capacity = 1;
length = 0;
data = new T[capacity];
}
//析构函数
~Vector() {
delete[] data;
}
//在表尾插入元素
void push_back(T value) {
if (length == capacity) {
capacity *= 2;
T* newdata = new T[capacity];
for (int i = 0; i < length; i++) {
newdata[i] = data[i];
}
delete[] data;
data = newdata;
}
data[length] = value;
length++;
}
//在向量的某位置插入元素
void insert(int index, T value) {
if (index < 0 || index > length) {
return;
}
if (length == capacity) {
capacity *= 2;
T* newdata = new T[capacity];
for (int i = 0; i < length; i++) {
newdata[i] = data[i];
}
delete[] data;
data = newdata;
}
for (int i = length - 1; i >= index; i--) {
data[i + 1] = data[i];
}
data[index] = value;
length++;
}
//清空向量中的元素
void clear() {
length = 0;
}
//返回向量中元素的个数
int size() {
return length;
}
//判断是否为空
bool empty() {
return length == 0;
}
//删除元素
void erase(int index) {
if (index < 0 || index >= length) {
return;
}
for (int i = index; i < length - 1; i++) {
data[i] = data[i + 1];
}
length--;
}
};
```
您可以根据这个示例代码进一步改进Vector类,以满足您的具体需求。
阅读全文