要编写一个自定义的Vector方法来删除一个不使用vector::erase()的元素,可以按照以下步骤进行:
removeElement()
,该方法接受要删除的元素作为参数。removeElement()
方法中,遍历数组,找到要删除的元素的位置。getSize()
获取当前元素数量,getElement()
获取指定位置的元素等。以下是一个示例实现:
#include <iostream>
template <typename T>
class MyVector {
private:
T* arr;
int size;
public:
MyVector() {
arr = nullptr;
size = 0;
}
~MyVector() {
delete[] arr;
}
void addElement(T element) {
T* newArr = new T[size + 1];
for (int i = 0; i < size; i++) {
newArr[i] = arr[i];
}
newArr[size] = element;
delete[] arr;
arr = newArr;
size++;
}
void removeElement(T element) {
int index = -1;
for (int i = 0; i < size; i++) {
if (arr[i] == element) {
index = i;
break;
}
}
if (index != -1) {
for (int i = index; i < size - 1; i++) {
arr[i] = arr[i + 1];
}
size--;
}
}
int getSize() {
return size;
}
T getElement(int index) {
if (index >= 0 && index < size) {
return arr[index];
}
throw std::out_of_range("Index out of range");
}
};
int main() {
MyVector<int> vec;
vec.addElement(1);
vec.addElement(2);
vec.addElement(3);
vec.addElement(4);
vec.addElement(5);
std::cout << "Vector size: " << vec.getSize() << std::endl;
std::cout << "Elements: ";
for (int i = 0; i < vec.getSize(); i++) {
std::cout << vec.getElement(i) << " ";
}
std::cout << std::endl;
vec.removeElement(3);
std::cout << "Vector size after removal: " << vec.getSize() << std::endl;
std::cout << "Elements after removal: ";
for (int i = 0; i < vec.getSize(); i++) {
std::cout << vec.getElement(i) << " ";
}
std::cout << std::endl;
return 0;
}
这个示例实现了一个简单的自定义Vector类,包含了添加元素、删除元素、获取元素等基本功能。你可以根据自己的需求进行扩展和优化。
领取专属 10元无门槛券
手把手带您无忧上云