【概述】

vector 是定义在 <vector> 头文件中的向量容器模版类,其以连续数组的方式存储元素序列,可以将 vector 看作是以顺序结构实现的线性表。

当在程序中需要使用动态数组时,vector 是一个理想的选择,其在使用过程中动态地增长存储空间,存取任何元素都能在参数时间内完成,但若在结尾插入,效率比较高,若往中间某个位置插入,则其插入位置后的元素都要后移,效率相对较低。

定义:vector<type> vectorName

参数:type 代表 vector 中存储元素的类型

【构造函数】

  • vector <type> c:产生一个空 vector,其中没有任何元素
  • vector <type> c(n):生成一个大小为 n 的 vector
  • vector <type> c(n, elem):产生一个大小为 n 的 vector,每个元素值都是 elem
  • vector <type> c1(c2):产生另一个同型 vector 的副本,所有元素都被复制
vector<int> v1;
vector<double> v2(10);
vector<string> v3(10,"abc");
vector<string> v4(v3);

【基本操作】

对 vector<type> v 的基本操作有:

  • v[i]:访问第 i 个元素
  • v.front():返回首元素
  • v.back():返回尾元素
  • v.size():返回容器中实际的元素个数
  • v.clear():删除容器中所有元素
  • v.empty():判断容器是否为空,若为空返回真,否则返回假
  • v.push_back(elem):向表尾插入元素 elem
  • v.pop_back():删除表尾元素
  • v1.swap(v2)、swap(v1,v2):将 v1 和 v2 元素互换

【迭代器操作】

对 vector<type> v 的迭代器 it 的操作有:

  • v.bedin():返回迭代器指向的第一个元素的位置
  • v.end():返回迭代器指向的最后一个元素后的位置
  • v.insert(it, elem):向迭代器 it 指向的元素前插入新元素 elem
  • v.insert(it, n, elem):向迭代器 it 指向的元素前插入 n 个 elem
  • v.insert(it, first, last):将由迭代器 first 和 last 所指定的序列 [first, last) 插入到迭代器 it 指向的元素前面
  • v.erase(it):删除由迭代器 it 所指向的元素
  • v.erase(first, last):删除由迭代器 first 和 last 所指定的序列 [first, last)

C++语言基础 —— STL —— 容器与迭代器 —— vector相关推荐

  1. C++语言基础 —— STL —— 容器与迭代器

    [概述] STL 是指 C++ 标准模板库,是 C++ 语言标准中的重要组成部分,其以模板类和模版函数的形式提供了各种数据结构与算法的精巧实现,如果能充分使用 STL,可以在代码空间.执行时间.编码效 ...

  2. C++语言基础 —— STL —— 容器与迭代器 —— list 与 deque

    [概述] list 与 deque 是在程序设计中会用到的数据容器,STL 提供了方便的链表.双端队列的实现,准确地说,STL 中的 list 与 deque 不同于 pair.vector 等容器, ...

  3. C++语言基础 —— STL —— 容器与迭代器 —— heap

    [概述] 在 STL 中,并没有将堆作为一种容器,其实现需要借助更低一层的容器组件作为其底层机制,比如:list.priority_queue 等,heap 的底层机制 vector 本身就是一个类模 ...

  4. C++语言基础 —— STL —— 容器与迭代器 —— bitset

    [概述] bitset 位于 <bitset> 头文件中,其是 STL 的一部分,准确地说,bitset 是一个模板类而不是容器,其模板参数不是类型,而整型的数值,即:bitset < ...

  5. C++语言基础 —— STL —— 容器与迭代器 —— set 与 multiset

    [概述] set 和 multiset 是集合数据容器,通过链表进行组织,具体实现采用了红黑树的平衡二叉树的数据结构,两者均定义在 <set> 头文件中,其会根据特定的规则,自动将元素排序 ...

  6. C++语言基础 —— STL —— 容器与迭代器 —— map 与 multimap

    [概述] map 和 multimap 是映射数据容器,两者均定义与 <map> 头文件中,其所有元素都是 pair,pair 的第一个元素被视为键值,第二个元素为实值. 他们是基于某一类 ...

  7. C++语言基础 —— STL —— 容器与迭代器 —— pair

    [概述] pair 是定义在 <utility> 头文件中的一个简单的模板类,常用于表示一个二元组或元素对,且其提供了按照字典序对元素对进行大小比较的比较运算符模版函数. 定义: pair ...

  8. C++ [STL容器反向迭代器]

    本文已收录至<C++语言和高级数据结构>专栏! 作者:ARMCSKGT STL容器反向迭代器 前言 正文 适配器 反向迭代器 反向迭代器框架 默认成员函数 反向迭代器的遍历 反向迭代器的比 ...

  9. STL 容器和迭代器连载6_顺序容器的操作3

    2019独角兽企业重金招聘Python工程师标准>>> /*- ========================================================== ...

最新文章

  1. 使用FULL OUTER JOIN拼接表数据
  2. 3.vector实现字符串类
  3. linux 使用timedatectl 修改时区和时间
  4. C++构造函数/析构函数 设置成private的原因
  5. 简单粗暴 我再送一波教程资料,Vue、大数据、AI都有
  6. java中计时器的用法Timer和TimerTask的用法__java中利用Timer与TImerTask 计时器间隔执行任务...
  7. 四元数左乘右乘_复数/四元数和转动/转动群
  8. python机器学习库sklearn——Lasso回归(L1正则化)
  9. 6.3 API : XGBoost
  10. 统计|如何理解两个总体均值之差的区间估计的计算
  11. linux图片裁剪软件安卓版,PS图片裁剪软件下载-PS图片裁剪助手appv1.0.1-Linux公社...
  12. c语言计算机那类教,C语言教学中的兴趣驱动
  13. Java线程池与Lambda表达式
  14. JavaScript学习笔记(6)变量
  15. NMOS管与PMOS管区别
  16. 函数的参数作为引用时的一些问题
  17. 这几年已经组织开发或者即将开发我的或与我有关的第7个薪资管理系统、第5个人事管理系统,从中你觉得啥才真正值钱?...
  18. SAP各模块字段与表的对应关系
  19. 操作系统原理模拟实验(基于C/C++模拟处理机调度、存储管理和文件系统)
  20. Windows查看端口被占用查找步骤

热门文章

  1. 李飞飞:在物体识别之后,计算机视觉还要多久才能理解这个世界?
  2. 惹毛了老婆后,老王居然本能地想按Ctrl+Z...
  3. 双12压测引出的线上Full GC排查
  4. 2019 Java发展趋势报告:Java老矣,Java正年轻
  5. 为什么要使用NoSQL
  6. Eclipse 默认设置的换行长度
  7. linwei_211 SVN错误:Attempted to lock an already-locked dir
  8. 初学Docker容器网络不得不看的学习笔记
  9. Ajax技术的一些总结
  10. sed高级命令及模式空间和交换空间简介