当前位置:实例文章 » JAVA Web实例» [文章]C++入门之stl六大组件--Vector库函数的介绍,以及模拟实现一些常用接口

C++入门之stl六大组件--Vector库函数的介绍,以及模拟实现一些常用接口

发布人:shili8 发布时间:2025-03-12 21:40 阅读次数:0

**C++入门之STL六大组件——Vector库函数的介绍**

在C++中,STL(Standard Template Library)是标准模板库,它提供了一系列高级数据结构和算法,使得程序员能够更轻松地编写出高效、可维护的代码。其中,Vector是最常用的容器类之一,它提供了动态数组的功能。

**1. Vector库函数的介绍**

Vector库函数提供了以下几个主要接口:

* `push_back(T x)`:在vector尾部添加一个元素。
* `pop_back()`:从vector尾部删除一个元素。
* `insert(iterator pos, T x)`:在指定位置插入一个元素。
* `erase(iterator pos)`:从指定位置删除一个元素。
* `begin()`和`end()`:返回指向vector首位和尾部的迭代器。
* `size()`:返回vector中元素的数量。

**2. 模拟实现Vector库函数**

下面是模拟实现Vector库函数的代码:

cpp#include <iostream>
using namespace std;

class Vector {
private:
 int capacity;
 int size_;
 T* data;

public:
 // 构造函数,初始化容量和大小 Vector(int capacity =10) : capacity(capacity), size_(0), data(new T[capacity]) {}

 // 析构函数,释放内存 ~Vector() { delete[] data; }

 // 在vector尾部添加一个元素 void push_back(T x) {
 if (size_ == capacity) {
 // 如果容量已满,则扩容 T* newData = new T[capacity *2];
 for (int i =0; i < size_; ++i)
 newData[i] = data[i];
 delete[] data;
 data = newData;
 capacity *=2;
 }
 data[size_++] = x;
 }

 // 从vector尾部删除一个元素 void pop_back() {
 if (size_ >0) {
 size_--;
 }
 }

 // 在指定位置插入一个元素 void insert(int pos, T x) {
 if (pos < 0 || pos > size_) {
 cout << "Invalid position!" << endl;
 return;
 }
 if (size_ == capacity) {
 // 如果容量已满,则扩容 T* newData = new T[capacity *2];
 for (int i =0; i < pos; ++i)
 newData[i] = data[i];
 newData[pos] = x;
 for (int i = pos +1; i <= size_; ++i)
 newData[i] = data[i -1];
 delete[] data;
 data = newData;
 capacity *=2;
 } else {
 // 移动后面的元素 for (int i = size_; i > pos; --i) {
 data[i] = data[i -1];
 }
 data[pos] = x;
 size_++;
 }
 }

 // 从指定位置删除一个元素 void erase(int pos) {
 if (pos < 0 || pos >= size_) {
 cout << "Invalid position!" << endl;
 return;
 }
 for (int i = pos; i < size_ -1; ++i)
 data[i] = data[i +1];
 size_--;
 }

 // 返回指向vector首位的迭代器 T* begin() { return data; }

 // 返回指向vector尾部的迭代器 T* end() { return data + size_; }

 // 返回vector中元素的数量 int size() { return size_; }
};


**3. 使用示例**

cppint main() {
 Vector vec;
 vec.push_back(10);
 vec.push_back(20);
 vec.push_back(30);

 cout << "Size: " << vec.size() << endl;

 vec.insert(1,15);
 cout << "Vector after insertion: ";
 for (T* it = vec.begin(); it != vec.end(); ++it)
 cout << *it << " ";

 vec.erase(2);
 cout << "
Vector after deletion: ";
 for (T* it = vec.begin(); it != vec.end(); ++it)
 cout << *it << " ";

 return0;
}


上述代码演示了如何使用Vector库函数来实现动态数组的功能。

相关标签:c++java开发语言
其他信息

其他资源

Top