c++中vector的用法详解vector类用法.docx
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
![preview](https://dl-preview.csdnimg.cn/55770801/0001-ae616428bdac60d4a0823aeabe234420_thumbnail-wide.jpeg)
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
C++中的`std::vector`是一个模板类,用于表示动态数组。它提供了许多方便的成员函数,使得在处理数组时更加灵活高效。`std::vector`的使用涉及到以下几个主要方面: 1. **声明与初始化**: - `std::vector<T> vec;` 声明一个空的`std::vector`,其中`T`是元素类型,如`int`、`double`等。 - `std::vector<T> vec(size);` 初始化一个具有`size`个默认构造元素的`std::vector`。 - `std::vector<T> vec(arr, arr + n);` 使用给定的数组`arr`的前`n`个元素初始化`std::vector`。 2. **元素访问**: - `vec[i]` 访问第`i`个元素,如同访问普通数组一样。 - `vec.at(i)` 安全访问,如果`i`超出范围,会抛出异常。 - `vec.front()` 获取第一个元素的引用。 - `vec.back()` 获取最后一个元素的引用。 3. **操作函数**: - `vec.push_back(val)` 在向量末尾添加一个`val`的拷贝。 - `vec.pop_back()` 移除向量的最后一个元素。 - `vec.insert(iter, val)` 在迭代器`iter`所在的位置插入`val`的一个拷贝。 - `vec.erase(iter)` 删除由`iter`指向的元素。 - `vec.erase(beg, end)` 删除范围`[beg, end)`内的元素。 - `vec.resize(n)` 改变向量大小为`n`,如果增大,则用默认值填充;如果减小,超出的元素将被删除。 - `vec.reserve(n)` 预分配至少`n`个元素的空间,但不改变向量的大小。 - `vec.resize(n, val)` 类似`resize`,但增大时使用`val`填充。 - `vec.clear()` 删除向量的所有元素。 - `vec.swap(vec2)` 与`vec2`交换元素。 4. **迭代器与容量**: - `vec.begin()` 返回指向向量第一个元素的迭代器。 - `vec.end()` 返回指向向量最后一个元素之后的迭代器。 - `vec.size()` 返回向量当前的元素数量。 - `vec.capacity()` 返回向量当前已分配的内存容量。 - `vec.empty()` 检查向量是否为空。 5. **内存管理与效率**: - `std::vector`的内存管理是动态的,当需要更多的空间时,会自动扩展。扩展通常是按一定比例(如1.5或2倍)增长,这可能导致插入操作的效率降低,因为涉及到内存的重新分配和元素的复制。 - `reserve(n)`函数用于预先分配内存,避免因频繁扩展而导致的性能下降。一旦调用了`reserve`,即使`size`小于`reserve`的值,`capacity`也不会减小,直到`pop_back`等操作导致元素数量减少。 - 如果预期要插入大量元素,使用`reserve`可以显著提高效率,因为它减少了内存重新分配的次数。 总之,`std::vector`是C++中非常实用的容器,提供了类似数组的功能,但更灵活且易于管理内存。理解并熟练使用其各种操作和功能,能够帮助我们编写更高效、更易维护的C++代码。
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![exe](https://img-home.csdnimg.cn/images/20210720083343.png)
![](https://csdnimg.cn/release/download_crawler_static/55770801/bg1.jpg)
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/fdb31a1c29a249f5ba817fd7940ce842_qq_35157908.jpg!1)
- 粉丝: 4
- 资源: 7万+
![benefits](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-1.c8e153b4.png)
![privilege](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-2.ec46750a.png)
![article](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-3.fc5e5fb6.png)
![course-privilege](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-4.320a6894.png)
![rights](https://csdnimg.cn/release/downloadcmsfe/public/img/vip-rights-icon.fe0226a8.png)
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
最新资源
- JavaMail-jar
- 推荐系统实战练习项目和源码.rar
- 微机原理与接口技术HQFC-A系列USB实验
- 联想笔记本维修图纸:Lenovo V130-15IKB Wistron LV315KB 17807 17807-1 17807
- 一个MATLAB GUI进阶示例,展示如何创建一个简单的用户界面,该界面使用户能够输入两个数值,执行加法运算,并显示结果
- JavaScript 基础学习1(js引入方式、基础使用、核心语法、复合类型) 示例代码
- delphi源码查看本机应用端口以及查看端口占用应用
- 联想笔记本维修图纸:Lenovo T440 T440S VIVL0 NM-A102 jv cb-1 swg svt sch-ec
- 联想笔记本维修图纸:Lenovo Flex 3-1130 BM5488-sch-svt-v1.4 FPC
- 山东大学软件测试技术复习提纲
![feedback](https://img-home.csdnimg.cn/images/20220527035711.png)
![feedback-tip](https://img-home.csdnimg.cn/images/20220527035111.png)
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)