vector中insert模拟实现
时间: 2024-10-09 14:15:43 浏览: 13
在C++中,Vector是一种动态数组容器,提供了一系列方便的操作,包括插入元素。如果你想模拟一个简单的vector insert操作,你可以按照以下步骤来实现:
```cpp
template <typename T>
class Vector {
private:
std::size_t size;
std::size_t capacity;
T* elements;
public:
// 构造函数等...
void _resize(size_t newSize) { // 当需要扩展容量时使用的私有辅助函数
if (newSize > capacity) {
T* temp = new T[newSize];
for (std::size_t i = 0; i < size; ++i)
temp[i] = elements[i]; // 拷贝现有元素
delete[] elements;
capacity = newSize;
elements = temp;
}
}
void insert(const std::size_t index, const T& value) { // 插入操作
if (index > size) {
throw std::out_of_range("Index out of range");
} else if (index == size) { // 如果要插入到末尾
_resize(capacity + 1);
elements[size++] = value;
} else { // 插入到中间位置
_resize(capacity + 1); // 预先扩容
for (std::size_t i = size; i > index; --i) {
elements[i] = elements[i - 1];
}
elements[index] = value;
size++;
}
}
};
// 使用示例:
Vector<int> v;
v.insert(2, 42); // 将42插入索引2的位置
```
这个模拟实现并不包含所有vector的功能,如reserve()预分配空间,但它展示了基本的插入操作原理。在实际使用中,你应该依赖STL提供的`std::vector`,因为它已经优化过并处理了各种边界情况。