C++ STL之动态数组vector(⽮量)的使⽤
写再最前面:摘录于柳神的笔记:
之前C语⾔⾥⾯⽤ int arr[] 定义数组,它的缺点是数组的⻓度不能随⼼所欲的改变,⽽C++⾥⾯有⼀个能完全替代数组的动态数组 vector (有的书⾥⾯把它翻译成⽮量, vector 本身就是⽮量、向量的意 思,但是叫做动态数组或者不定⻓数组我觉得更好理解,绝⼤多数中⽂⽂档中⼀般不翻译直接叫它 vector~)。
它能够在运⾏阶段设置数组的⻓度、在末尾增加新的数据、在中间插⼊新的值、⻓度任 意被改变,很好⽤~
它在头⽂件 vector ⾥⾯,也在命名空间 std ⾥⾯,所以使⽤的时候要引⼊头⽂ 件 #include 和 using 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 的简写。
C++ STL之动态数组vector(⽮量)的使⽤的更多相关文章
- 【模板】c++动态数组vector
相信大家都知道$C$++里有一个流弊的$STL$模板库.. 今天我们就要谈一谈这里面的一个容器:动态数组$vector$. $vector$实际上类似于$a[]$这个东西,也就是说它重载了$[]$运算 ...
- 动态数组 - vector
#include <iostream> #include <vector> // 头文件 using namespace std; int main() { vector< ...
- 【OI】C++STL 不定长数组 vector
Vector 本来是向量的意思,只不过在用法上类似于一个不限长度的数组. 定义语法:vector<数据类型> 名称; 一.头文件:<vector> (bits/stdc++请忽 ...
- 越努力越幸运--动态数组vector
最近回忆山哥写的stl,觉得很好用,也写了一份. 感谢群里的大佬帮忙review,还是很多的问题的. code:https://github.com/HellsingAshen/vector_c.gi ...
- Implementing a Dynamic Vector (Array) in C(使用c实现动态数组Vector)
An array (vector) is a common-place data type, used to hold and describe a collection of elements. T ...
- C++ vector动态数组
#include<vector>头文件 vector类称作向量类 百度百科的解释:https://baike.baidu.com/item/vector/3330482 我喜欢把知识点拿出 ...
- C++向量 vector动态数组
需要包含头文件, #include <vector> using namespace std; vector 容器与数组相比其优点在于它能够根据需要随时自动调整自身的大小以便容下所 ...
- vector:动态数组
vector是C++标准模板库中的部分内容,中文偶尔译作“容器”,但并不准确.它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存 ...
- STL顺序容器【vector】【deque】【list】
我们都知道,stl在集装箱船分为两类,订购集装箱和相关的容器. 顺序容器有三种即动态数组vector,双端队列deque,以及链表list (对csdn的文字排版严重吐槽.写好的版发表了就变了) 一: ...
随机推荐
- 传奇版本中利用NPC迅速给人物加血脚本制作
在传奇中,快速给玩家回血的脚本被广泛运用,能刺激玩家消费,怎么说呢,玩家跟人PK激情中,特别是群打,快速补血的重要性不说你也懂的. [@main]神医:“最近玛法大陆动荡不平,每天进进出出这里的伤者日 ...
- angular iframe 加载失效解决办法已经自适应高度
<iframe frameborder="0" id="iframe1"></iframe> $('#iframe1').attr('s ...
- Postman的使用和测试
1.输入认证的IP,获取headers 2.输入用户名及密码 3.带着headers去访问网址 4.传参
- js递归生成树形下拉菜单
需求:我需要把一个单表的数据转换成类似菜单那种如图所示:我呢需要把这个菜单树放入到下框里面去如图所示: 下面是实现思路:1.第一步1.1var afTypeJson=${afTypeJson}// 这 ...
- A Simple Problem with Integers(树状数组区间变化和区间求和)
You have N integers, A1, A2, ... , AN. You need to deal with two kinds of operations. One type of op ...
- SUDO_EDITOR
目录 SUDO_EDITOR 参考 SUDO_EDITOR SUDO_EDITOR
- ASP.NET Core搭建多层网站架构【3-xUnit单元测试之简单方法测试】
2020/01/28, ASP.NET Core 3.1, VS2019, xUnit 2.4.0 摘要:基于ASP.NET Core 3.1 WebApi搭建后端多层网站架构[3-xUnit单元测试 ...
- python学习HTML之CSS
1.sytle属性设置 . <head> <meta charset="UTF-8"> <title>Title</title> & ...
- Linux - 查看端口占用、开放情况
1. lsof -i : 2. nmap 127.0.0.1 3. sudo netstat -tunlp (不加sudo看不见PID) 4. gufw 参考 https://askubuntu.co ...
- Linux - 终端terminal进入交互环境的快捷键
1. 上一页 ctrl + b 2. 下一页 空格 / ctrl + f 3. 上半页 ctrl + u 4. 下半页 ctrl + d 5. 上一行 k 6. 下一行 j 7. 向上查找 ?key ...