C++ STL vector完全指南:初始化、操作与接口解析

需积分: 0 0 下载量 201 浏览量 更新于2024-06-14 1 收藏 17KB DOCX 举报
本文主要介绍了C++中的STL容器vector,包括其初始化方法、赋值操作、数据的增删查改以及其他重要的接口功能。 一、vector的初始化 1. 默认构造函数:创建一个不包含任何元素的空vector。 ```cpp std::vector<int> v; // 创建一个空的vector ``` 2. 拷贝构造函数(copy区间):通过已有的vector区间复制元素来创建新的vector。 ```cpp std::vector<int> v1 = {1, 2, 3, 4, 5}; std::vector<int> v2(v1.begin(), v1.end()); // 复制v1的所有元素到v2 ``` 3. 指定数量和元素值的构造函数:创建具有指定数量且所有元素都相同的新vector。 ```cpp std::vector<int> v3(3, 10); // 创建一个含有3个10的vector ``` 4. 指定数量的构造函数:创建具有指定数量但元素值未定义的vector(通常为默认构造的对象)。 ```cpp std::vector<int> v4(5); // 创建一个含有5个默认值(通常是0)的vector ``` 5. 拷贝构造函数(常规形式):复制一个已经存在的vector。 ```cpp std::vector<int> v5(v1); // 创建一个与v1完全相同的vector v5 ``` 二、vector的初始化-赋值 1. `.assign(beg, end)`:用指定区间内的元素替换vector内现有的元素。 ```cpp std::vector<int> v6; v6.assign(v1.begin(), v1.end()); // 将v1的内容赋给v6 ``` 2. `.assign(n, elem)`:用指定数量的同一元素替换vector内现有元素。 ```cpp v6.assign(4, 20); // 将v6的元素替换为4个20 ``` 3. 重载等号操作符 `operator=`:赋值运算符,将一个vector的元素赋给另一个vector。 ```cpp v6 = v1; // v6现在等于v1 ``` 4. 直接列表初始化:使用大括号{}创建vector并初始化元素。 ```cpp std::vector<int> v7 = {1, 3, 5, 7, 9}; // 直接初始化vector ``` 5. `swap` 函数:交换两个vector的内容。 ```cpp std::vector<int> v8, v9; // ... 初始化v8和v9 ... v8.swap(v9); // v8和v9的内容互换 ``` 三、数据的增删查改 1. `.at(int id)`:安全访问vector中的元素,若索引超出范围会抛出异常。 ```cpp std::vector<int> v10 = {1, 2, 3}; int value = v10.at(1); // 获取第二个元素的值 ``` 2. `.front()`:获取第一个元素。 3. `.back()`:获取最后一个元素。 4. `[]` 访问:直接通过索引访问vector中的元素。 5. 插入函数:使用`.insert()`在指定位置插入元素。 ```cpp v10.insert(v10.begin() + 1, 4); // 在第二个位置插入4 ``` 6. `.push_back(ele)`:在vector尾部添加元素。 7. `.pop_back()`:移除vector尾部的元素。 8. 删区间:使用`.erase()`删除指定范围内的元素。 9. 删指定位置:通过迭代器删除单个元素。 10. 清空:调用`.clear()`函数清除所有元素。 四、其他接口 1. `.size()`:返回vector中元素的数量。 2. `.empty()`:检查vector是否为空。 3. `.resize(int num)`:调整vector大小,若扩展会用默认值填充,若缩减则删除元素。 4. `.capacity()`:返回vector当前能容纳的元素数量。 5. `.reserve(int len)`:预留内存空间,确保vector可以容纳至少len个元素,减少不必要的内存分配。 总结:C++中的STL vector提供了丰富的操作方法,用于创建、初始化、操作和管理动态数组。理解这些方法有助于编写高效且可靠的代码。