C++ STL vector完全指南:初始化、操作与接口解析
需积分: 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提供了丰富的操作方法,用于创建、初始化、操作和管理动态数组。理解这些方法有助于编写高效且可靠的代码。
点击了解资源详情
点击了解资源详情
点击了解资源详情
2010-09-26 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
点击了解资源详情
ULTRA??
- 粉丝: 1395
- 资源: 1
最新资源
- Angular程序高效加载与展示海量Excel数据技巧
- Argos客户端开发流程及Vue配置指南
- 基于源码的PHP Webshell审查工具介绍
- Mina任务部署Rpush教程与实践指南
- 密歇根大学主题新标签页壁纸与多功能扩展
- Golang编程入门:基础代码学习教程
- Aplysia吸引子分析MATLAB代码套件解读
- 程序性竞争问题解决实践指南
- lyra: Rust语言实现的特征提取POC功能
- Chrome扩展:NBA全明星新标签壁纸
- 探索通用Lisp用户空间文件系统clufs_0.7
- dheap: Haxe实现的高效D-ary堆算法
- 利用BladeRF实现简易VNA频率响应分析工具
- 深度解析Amazon SQS在C#中的应用实践
- 正义联盟计划管理系统:udemy-heroes-demo-09
- JavaScript语法jsonpointer替代实现介绍