浅谈C++ STL vector 容器

本篇随笔简单介绍一下\(C++STL\)中\(vector\)容器的使用方法和常见的使用技巧。\(vector\)容器是\(C++STL\)的一种比较基本的容器。我们在学习这个容器的时候,不仅要学到这个容器具体的使用方法,更要从中体会\(C++STL\)的概念。

vector容器的概念

\(vector\)在英文中是矢量的意思。如果学过高中数学必修四的平面向量或者高中物理必修一的第一节课对其会有一个直观的认识。但是在\(STL\)中,\(vector\)和物理、几何等东西没有任何关系。

我们知道,一个数组必须要有固定的长度,在开一个数组的时候,这个长度也就被静态地确定下来了。但是\(vector\)却是数组的“加强版”,对于一组数据来讲,你往\(vector\)里存多少数据,\(vector\)的长度就有多大。也就是说,我们可以将其理解为一个“变长数组”。

事实上,\(vector\)的实现方式是基于倍增思想的:假如\(vector\)的实际长度为\(n\),\(m\)为\(vector\)当前的最大长度,那么在加入一个元素的时候,先看一下,假如当前的\(n=m\),则再动态申请一个\(2m\)大小的内存。反之,在删除的时候,如果\(n\ge \frac{m}{2}\),则再释放一半的内存。

vector容器的声明

\(vector\)容器存放在模板库:#include<vector>里,使用前需要先开这个库。

\(vector\)容器的声明遵循\(C++STL\)的一般声明原则:

容器类型<变量类型> 名称

例:

#include<vector>
vector<int> vec;
vector<char> vec;
vector<pair<int,int> > vec;
vector<node> vec;
struct node{...};

vector容器的使用方法

\(vector\)容器的使用方法大致如下表所示:

用法 作用
vec.begin(),vec.end() 返回vector的首、尾迭代器
vec.front(),vec.back() 返回vector的首、尾元素
vec.push_back() 从vector末尾加入一个元素
vec.size() 返回vector当前的长度(大小)
vec.pop_back() 从vector末尾删除一个元素
vec.empty() 返回vector是否为空,1为空、0不为空
vec.clear() 清空vector

除了上面说过的那些之外,我们的\(vector\)容器是支持随机访问的,即可以像数组一样用\([\,\,]\)来取值。请记住,不是所有的\(STL\)容器都有这个性质!在\(STL\)的学习过程中,一定要清楚各个容器之间的异同!

浅谈C++ STL vector 容器的更多相关文章

  1. 浅谈C++ STL queue 容器

    浅谈C++ STL queue 容器 本篇随笔简单介绍一下\(C++STL\)中\(queue\)容器的使用方法和常见的使用技巧.\(queue\)容器是\(C++STL\)的一种比较基本的容器.我们 ...

  2. 浅谈C++ STL string容器

    浅谈C++ STL string容器 本篇随笔简单讲解一下\(C++STL\)中\(string\)容器的使用方法及技巧. string容器的概念 其实\(string\)并不是\(STL\)的一种容 ...

  3. 浅谈C++ STL list 容器

    浅谈C++ STL list 容器 本篇随笔简单讲解一下\(C++STL\)中\(list\)容器的使用方法和使用技巧. list容器的概念 学习过\(C++STL\)的很多同学都知道,\(STL\) ...

  4. 浅谈C++ STL stack 容器

    浅谈C++ STL stack 容器 本篇随笔简单介绍一下\(C++STL\)中\(stack\)容器的使用方法和常见的使用技巧. stack容器的概念 \(stack\)在英文中是栈的意思.栈是一种 ...

  5. 浅谈C++ STL deque 容器

    浅谈C++ STL deque 容器 本篇随笔简单介绍一下\(C++STL\)中\(deque\)容器的使用方法及常见使用技巧. deque容器的概念 \(deque\)的意义是:双端队列.队列是我们 ...

  6. C++ STL vector容器学习

    STL(Standard Template Library)标准模板库是C++最重要的组成部分,它提供了一组表示容器.迭代器.函数对象和算法的模板.其中容器是存储类型相同的数据的结构(如vector, ...

  7. STL - vector容器

    1Vector容器简介 vector是将元素置于一个动态数组中加以管理的容器. vector可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法,这个等下会详讲). vector尾部添加 ...

  8. STL vector容器 和deque容器

    前言 STL是C++的框架,然后vector容器和deque容器又是STL的一部分... 这块的内容都是理解.概念为主,没什么捷径,希望读者能静下来记. 先来讲vector容器(单端动态数组) 1.v ...

  9. 2.3 C++STL vector容器详解

    文章目录 2.3.1 引入 2.3.2 代码实例 2.3.3 运行结果 总结 2.3.1 引入 vector 容器 动态数组 可变数组 vector容器 单口容器(尾部操作效率高) vector动态增 ...

随机推荐

  1. 算法问题实战策略 SORTGAME

    地址 https://algospot.com/judge/problem/read/SORTGAME 解答 常规BFS是会超时的  按照书上的提示 应该是打表(居然还有提倡打表的题目) tle 代码 ...

  2. 更新GitHub项目出现There is no tracking information for the current branch. Please specify which branch you want to merge with. 怎么解决

    git pull命令用于从另一个存储库或本地分支获取并集成(整合).git pull命令的作用是:取回远程主机某个分支的更新,再与本地的指定分支合并,它的完整格式稍稍有点复杂. 如果当前分支只有一个追 ...

  3. CF582E Boolean Function(DP,状态压缩,FMT)

    简单题. 我第二道自己做出来的 2900 没毛病,我没切过 2800 的题 lqy:"CF 评分 2800 是中等难度" 我活个啥劲啊 为了方便(同时压缩状态个数),先建出表达式树 ...

  4. 用一行Python代码制作动态二维码

    在GitHub上发现了一个比较有意思的项目,只需要一行Python代码就可以快捷方便生成普通二维码.艺术二维码(黑白/彩色)和动态GIF二维码. GitHub网站参见:https://github.c ...

  5. 21个Java Collections面试问答

    Java Collections框架是Java编程语言的核心API之一. 这是Java面试问题的重要主题之一.在这里,我列出了一些重要的Java集合面试问题和解答,以帮助您进行面试.这直接来自我14年 ...

  6. JeeSite | 保存信息修改记录续

    遗留问题 上篇文章中遗留了一个问题,就是为了要关联类属性与注释,注释与字典的地方使用了两个map来逐个添加了相关的信息,如下所示: Map<String, String> mapField ...

  7. 英语阅读——The confusing pursuit of beauty

    这篇文章是<新视野大学英语>第四册的第二单元的文章,很好的一篇议论文,读起来也很有意思. 1 If you're a man, at some point a woman will ask ...

  8. .net core入门-项目启动时报错:HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure

    在打开Core的项目首页时,页面有时候会出现:HTTP Error 502.5 - ANCM Out-Of-Process Startup Failure的错误,但是这里面看不出任何错误详情,这个时候 ...

  9. String replaceAll(String regex,String str)满足正则表达式的部分替换为给定内容

    package seday02;/*** * String replaceAll(String regex,String str)* @author xingsir*/public class Rep ...

  10. js使用工具将表单封装成json字符串传到后台,js截取字符串(学生笔记)

    <script src="js/jquery.min.js"></script> <script src="https://cdn.boot ...