📅  最后修改于: 2023-12-03 15:29:52.404000             🧑  作者: Mango
动态向量(Dynamic Vector)是一种自动调整大小的数据结构,它可以根据需要动态地扩展或缩小存储空间。在C++中,我们可以使用STL的vector容器来实现动态向量。
vector是一个动态数组,它相当于C语言中的数组,但没有固定的大小限制。vector容器是C++标准库中的一种容器,它提供了方便的功能,如元素的添加、删除和访问等。
使用vector容器需要包含头文件
#include <vector>
using namespace std;
vector<int> v; // 创建空的vector
vector中的元素可以是任何类型,例如int、double、string等。上面的代码定义了一个存储int类型元素的vector容器。
vector提供了push_back()函数用于在vector中添加元素,该函数将元素插入到vector的末尾。例如:
v.push_back(1); // 在vector的末尾添加元素1
v.push_back(2); // 在vector的末尾添加元素2
v.push_back(3); // 在vector的末尾添加元素3
vector提供了下标运算符[]用于访问vector中的元素,下标从0开始。例如:
cout << v[0] << endl; // 输出元素1
cout << v[1] << endl; // 输出元素2
cout << v[2] << endl; // 输出元素3
vector提供了pop_back()函数用于在vector中删除元素,该函数从vector的末尾删除一个元素。例如:
v.pop_back(); // 删除vector中的最后一个元素
下面我们使用C++的类来封装动态向量,使得使用起来更方便和灵活。
class DynamicVector {
public:
DynamicVector(); // 构造函数
~DynamicVector(); // 析构函数
void add(int element); // 添加元素
void remove(int position); // 删除指定位置的元素
int get(int position); // 获取指定位置的元素
int size(); // 获取向量大小
private:
vector<int> vec; // 内部使用vector
};
上述类中,我们使用了vector作为内部的存储结构,并提供了添加、删除、获取和获取大小等操作的方法。
下面是构造函数的实现:
DynamicVector::DynamicVector() {
vec = vector<int>(); // 创建空的vector
}
下面是析构函数的实现:
DynamicVector::~DynamicVector() {
// vector会自动销毁
}
下面是向动态向量中添加元素的实现:
void DynamicVector::add(int element) {
vec.push_back(element); // 在vector的末尾添加元素
}
下面是删除动态向量中指定位置元素的实现:
void DynamicVector::remove(int position) {
vec.erase(vec.begin() + position); // 删除指定位置的元素
}
下面是获取动态向量中指定位置元素的实现:
int DynamicVector::get(int position) {
return vec[position]; // 获取指定位置的元素
}
下面是获取动态向量大小的实现:
int DynamicVector::size() {
return vec.size(); // 获取向量大小
}
下面是使用DynamicVector类的示例代码:
#include <iostream>
#include "DynamicVector.h"
using namespace std;
int main() {
DynamicVector vec;
vec.add(1);
vec.add(2);
vec.add(3);
cout << "vec[0] = " << vec.get(0) << endl;
cout << "vec[1] = " << vec.get(1) << endl;
cout << "vec[2] = " << vec.get(2) << endl;
cout << "vec size = " << vec.size() << endl;
vec.remove(1);
cout << "vec[0] = " << vec.get(0) << endl;
cout << "vec[1] = " << vec.get(1) << endl;
cout << "vec size = " << vec.size() << endl;
return 0;
}
上述代码中,我们使用DynamicVector类创建了一个动态向量,向其中添加了三个元素,然后输出了这三个元素以及向量的大小。接着我们删除了第二个元素,再次输出向量中的元素以及向量的大小。运行上述代码,输出结果如下:
vec[0] = 1
vec[1] = 2
vec[2] = 3
vec size = 3
vec[0] = 1
vec[1] = 3
vec size = 2
从输出结果可以看出,我们成功地创建了动态向量类,并可以方便地使用它的方法实现向量的添加、删除和访问等操作。