C++

C++ 知识量:19 - 82 - 316

3.3 标准库类型vector><

标准库类型vector- 3.3.1 -

C++标准库中的vector是一种动态数组,它支持随机访问和修改元素,可以动态增长和缩小。vector被定义在<vector>头文件中,它是一个类模板,可以存储任意类型的元素。

vector类型的特点包括:

  • 动态数组:vector底层使用一个动态数组来存储元素,可以随机访问和修改元素,同时也支持使用下标访问。

  • 动态增长:vector可以根据需要动态增长,当容量不足以容纳更多元素时,会自动分配更大的内存空间,并将原有元素复制到新的内存空间中。

  • 多种操作:vector支持多种操作,包括添加元素、删除元素、修改元素、访问元素等。

  • 类型安全:vector可以存储任意类型的元素,但需要在声明时指定元素类型,以保证类型安全。

  • 内存管理:vector会自动管理内存,当vector对象被销毁时,会自动释放内存空间。

使用vector可以方便地实现动态数据的存储和处理,是C++中常用的数据结构之一。

定义和初始化vector对象- 3.3.2 -

在C++中,可以使用以下方式定义和初始化vector对象:

1. 定义空vector对象:

std::vector<int> v; // 定义一个空的vector<int>对象

2. 初始化vector对象并指定元素类型和数量:

std::vector<int> v(10, 0); // 定义一个包含10个整数的vector对象,初始值为0

3. 使用数组初始化vector对象:

int arr[] = {1, 2, 3, 4, 5};    
std::vector<int> v(arr, arr + sizeof(arr) / sizeof(int)); // 使用数组初始化vector对象

4. 使用另一个vector对象初始化当前vector对象:

std::vector<int> v1 = {1, 2, 3, 4, 5};    
std::vector<int> v2(v1); // 使用v1初始化v2

注意,vector对象的初始化方式可能因编译器而异。

向vector对象中添加元素- 3.3.3 -

可以使用push_back()函数向vector对象中添加元素。例如,假设有一个vector<int>类型的对象v,可以使用以下代码向其中添加一个元素:

v.push_back(10); // 在vector末尾添加一个整数值10

此函数还可以接受多个参数,以便一次添加多个元素。例如:

v.push_back(10, 20, 30); // 添加三个整数值10、20和30

除了在末尾添加元素外,还可以使用insert()函数在vector对象的任意位置插入元素。例如:

v.insert(v.begin() + 2, 40); // 在vector的第3个位置插入整数值40

此函数接受两个参数,第一个参数是指向要插入位置的前一个元素的迭代器,第二个参数是要插入的元素值。注意,插入位置的索引是从0开始的。

其他vector操作- 3.3.4 -

C++的vector提供了许多操作来管理和操作数组中的元素。除了添加元素,以下是一些常用的vector操作:

1. 删除元素:

使用erase()函数从vector中删除一个元素。例如:

std::vector<int> v = {10, 20, 30, 40};    
v.erase(v.begin() + 2);   // 删除vector的第3个元素

2. 访问元素:

使用下标运算符[]或迭代器访问vector中的元素。例如:

std::vector<int> v = {10, 20, 30, 40};    
int first = v[0];    // 访问vector的第一个元素      
int last = v.back();   // 访问vector的最后一个元素

3. 修改元素:

使用下标运算符[]或迭代器修改vector中的元素。例如:

std::vector<int> v = {10, 20, 30, 40};    
v[1] = 50;    // 修改vector的第二个元素为50

4. 获取vector的大小:

使用size()函数获取vector的大小(即元素的数量)。例如:

std::vector<int> v = {10, 20, 30, 40};    
int size = v.size();    // 获取vector的大小并存储在size变量中