写再最前面:摘录于柳神的笔记:

   之前C语⾔⾥⾯⽤ int arr[] 定义数组,它的缺点是数组的⻓度不能随⼼所欲的改变,⽽C++⾥⾯有⼀个能完全替代数组的动态数组 vector (有的书⾥⾯把它翻译成⽮量, vector 本身就是⽮量、向量的意 思,但是叫做动态数组或者不定⻓数组我觉得更好理解,绝⼤多数中⽂⽂档中⼀般不翻译直接叫它 vector~)。

  它能够在运⾏阶段设置数组的⻓度、在末尾增加新的数据、在中间插⼊新的值、⻓度任 意被改变,很好⽤~

  它在头⽂件 vector ⾥⾯,也在命名空间 std ⾥⾯,所以使⽤的时候要引⼊头⽂ 件 #includeusing namespace std;   vector 、 stack 、 queue 、 map 、 set 这些在C++中都叫做容器,这些容器的⼤⼩都可以⽤ .size() 获取到,就像 string s 的⻓度⽤ s.length() 获取⼀样~( string 其实也可以⽤ s.size() ,不过对于 vector 、 stack 、 queue 、 map 、 set 这样的容器我们⼀般讨论它的⼤⼩ size ,字符串⼀般讨论 它的⻓度 length ~其实 string ⾥⾯的 size 和 length 两者是没有区别、可以互换使⽤的)

  vector 可以⼀开始不定义⼤⼩,之后⽤ resize ⽅法分配⼤⼩,也可以⼀开始就定义⼤⼩,之后还可以 对它插⼊删除动态改变它的⼤⼩~⽽且不管在 main 函数⾥还是在全局中定义,它都能够直接将所有 的值初始化为0(不⽤显式地写出来,默认就是所有的元素为0),再也不⽤担⼼C语⾔⾥⾯出现的那 种 int arr[10]; 结果忘记初始化为0导致的各种bug啦~

  

  不管是 vector 、 stack 、 queue 、 map 还是 set 都有很多好⽤的⽅法,这些⽅法都可以在www.cpl usplus.com官⽅⽹站中直接查询官⽅⽂档,上⾯有⽅法的讲解和代码示例~官⽅⽂档是刷题时候必不可少的好伙伴~(如果你⽤的是 Mac OS 系统,下载软件 Dash 然后在⾥⾯下载好C++,平时查⽂档会 更⽅便,我平时做开发写算法都在 Dash ⾥⾯查⽂档,内容和官⽅⽂档是⼀样的~)

PS:经此教程读 者Keil Glay提醒, Windows 下有受 Dash 启发⽽开发的离线⽂档浏览 器 Zeal (https://zealdocs.org/),和 Dash 的功能⼀样,使⽤ Windows 的⼩伙伴可以下载 Zeal 看 离线官⽅⽂档~

⽐如进⼊官⽹搜索 vector ,就会出现 vector 拥有的所有⽅法,点进去⼀个⽅法就能看到这个⽅法的 详细解释和代码示例~当然我们平时写算法⽤不到那么多⽅法啦,只有⼏个是常⽤的~以下是⼀些常 ⽤的 vector ⽅法:

容器 vector 、 set 、 map 这些遍历的时候都是使⽤迭代器访问的, c.begin() 是⼀个指针,指向容器 的第⼀个元素, c.end() 指向容器的最后⼀个元素的后⼀个位置,所以迭代器指针 it 的for循环判断条 件是 it != c.end()

我再重复⼀遍~ c.end() 指向容器的最后⼀个元素的后⼀个位置:

访问元素的值要对 it 指针取值,要在前⾯加星号~所以是 cout << *it; 这⾥的auto相当于 vector::iterator 的简写。

最新文章

  1. C.C++把整个文件内容读进一个buffer中
  2. C#导出Excel那些事
  3. ffmpeg处理RTMP流媒体的命令 发送流媒体的命令(UDP,RTP,RTMP)
  4. intellij 提交代码到git
  5. C里面的类型字节长度和范围
  6. ASP.NET MVC开发微信(四)
  7. input text框和 checkbox 连带被选中的情况
  8. 巧用FileShare解决C#读写文件时文件正由另一进程使用的bug
  9. Winform基础 -- 菜单
  10. Win7下部署 .NET MVC网站 之 HTTP错误 403.14-Forbidden 解决方法
  11. 诡异的php 输出缓冲
  12. Python中Template使用的一个小技巧
  13. 内部办公网与IDC机房的GRE隧道配置实践
  14. 学习windows编程 day3 之滚动条完善
  15. SSE图像算法优化系列四:图像转置的SSE优化(支持8位、24位、32位),提速4-6倍
  16. 外网teamview连接不上服务器teamview的错误: 一直显示正在连接,正在初始化显示参数的
  17. java发送http连接
  18. vue 缓存的keepalive页面刷新数据
  19. php脚本cli 模式运行
  20. LeetCode 910. Smallest Range II

热门文章

  1. 第一阶段集训(这篇先写写tarjan以及圆方树)
  2. 【C语言】计算N名同学的某门功课的平均成绩
  3. 【C语言】判断某一正整数是否为完数
  4. 传奇gee引擎,智能假人,假人脚本,geeM2假人
  5. tp5 配置 // 视图输出字符串内容替换 &#39;view_replace_str&#39; 的原理
  6. centos610无桌面安装JDK
  7. 2.1.FastDFS-单机拆分版-调度器安装配置
  8. java比较时间的方法
  9. JQ - 绑定(on)/解绑(off)事件(浅显的见解)
  10. Linux - 软硬链接,hard link and symbolic link