.cpp文件实现动态分配的顺序表
时间: 2024-10-21 14:06:13 浏览: 10
cpp代码-顺序表的动态分配
在C++中,动态顺序表(Dynamic Array)通常通过`std::vector`来实现,这是一种底层由连续内存块管理的数据结构。如果你想要手动实现,可以创建一个模板类,它包含元素类型、容量、指针以及一些基本操作如添加、删除和访问元素。下面是一个简单的示例:
```cpp
template <typename T>
class DynamicList {
private:
T* elements; // 存储元素的指针
size_t capacity; // 当前容量
size_t size; // 实际元素数量
public:
// 构造函数,初始化大小为0
DynamicList() : elements(nullptr), capacity(0), size(0) {}
// 动态扩容
void resize(size_t newSize) {
if (newSize > capacity) {
T* newElements = new T[newSize];
std::copy(elements, elements + size, newElements); // 拷贝旧元素到新空间
delete[] elements;
elements = newElements;
capacity = newSize;
}
}
// 添加元素
void push_back(T value) {
resize(capacity == size ? capacity * 2 : size + 1);
elements[size++] = value;
}
// 访问元素
T& operator[](size_t index) {
assert(index < size); // 确保索引有效
return elements[index];
}
// 删除元素
void remove(size_t index) {
if (index < size) {
for (size_t i = index; i < size - 1; ++i)
elements[i] = elements[i + 1];
--size;
if (capacity > size && size > 0) resize(size);
} else {
throw std::out_of_range("Index out of range");
}
}
// 清空并释放内存
~DynamicList() {
delete[] elements;
elements = nullptr;
capacity = 0;
size = 0;
}
};
```
阅读全文