[知识点]C++中STL容器之vector
零、STL目录
1、容器之map
2、容器之vector
3、容器之set
一、前言
关于STL和STL容器的概念参见STL系列第一篇——map(见上)。今天介绍第二个成员——vector。
二、用途
vector的本质是数组,但更为灵活,高级。数组在定义时需要确定范围,可能存在浪费内存或者越界两大问题,而可以动态拓展的vector完美解决了这两个问题,它相当于是可以分配拓展的数组。vector支持各种数据类型。
三、构造与功能
1、构造
struct node {
int x;
char y;
};
vector <int> a;
vector <string> b;
vector <node> c;
vector <int>::iterator it;
支持各种数据类型,结构体亦可。迭代器不再介绍,详情参见map(见上)。
2、功能
vector实在算是STL容器中最好理解的了,同时有了前面map的铺垫,函数大可大同小异,大部分都不详细介绍了,直接给个列表。

两个没有提及的函数单独拎出来——lower_bound和upper_bound。
首先,其意义与map中提及的一致:lower_bound()返回值 >= 给定元素的第一个位置,upper_bound()返回值 > 给定元素的第一个位置。
然后,这俩函数能被用于:map, vector, set, multiset。map, set没什么特别的,而在vector中用法略有不同。
在vector中,两个函数存在三个参数:(首地址,尾地址,值)。由于sort对vector的完美支持,我们可以利用这两个函数进行快速的区间大小查询。首先对数组进行快速排序(默认从小到大),然后利用lower_bound函数二分查找第一个大于等于该值的位置。具体运用参见:《[分块] 数列分块入门1-9》中的“分块练习2”。
[知识点]C++中STL容器之vector的更多相关文章
- [知识点]C++中STL容器之map
UPDATE(20190416):写完vector和set之后,发现不少内容全部引导到map上了……于是进行了一定的描述补充与更正. 零.STL目录 1.容器之map 2.容器之vector 3.容器 ...
- [知识点]C++中STL容器之set
零.STL目录 1.容器之map 2.容器之vector 3.容器之set 一.前言 继上期的vector之后,我们又迎来了另一个类数组的STL容器——set. 二.用途与特性 set,顾名思义,集合 ...
- STL容器之vector
[1]模板类vector 模板类vector可理解为广义数组.广义数组,即与类型无关的数组,具有与数组相同的所有操作. 那么,你或许要问:既然C++语言本身已提供了一个序列式容器array,为什么还要 ...
- 顺序容器之vector
最近因为需要,在看C++ primer,哇,感觉这本书真不错,讲的细而且到位,而且大量的练习题,不愧为C++学习的经典书籍.今天看了顺序容器方面的内容,现在汇报一下: 一.什么是vector vect ...
- C++STL模板库序列容器之vector
目录 STL之Vecter 一丶STL简介 二丶Vector用法 1.vector容器的使用 2.vector迭代器. 3.vector中的方法. 三丶常用算法 1.常见算法中的算法方法. 2.sor ...
- STL序列容器之vector
一,vector容器简介 1.vector容器的原理 vector是将元素置于一个动态数组中加以管理的容器. 2.vector容器的特点 vector容器可以随机存取元素,支持索引存取(即用数组下标的 ...
- C++ 序列式容器之vector
什么是容器 容器,顾名思义,是用来容放东西的场所.C++容器容放某种数据结构,以利于对数据的搜寻或排序或其他特殊目的.众所周知,常用的数据结构不外乎:数组array, 链表list, 树tree ...
- C++ STL容器之 stack
STL 中的 stack 是一种容器适配器,而不是一种容器. 它是容器适配器是指,只要支持一系列方法的容器(empty, size, back, push_back, pop_back),都能作为st ...
- C++容器之Vector
vector是C++标准模板库中的部分内容,它是一个多功能的,能够操作多种数据结构和算法的模板类和函数库.vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说vect ...
随机推荐
- 初探C#
初探.NET底层原理 学习C#离不开.net平台,因为微软的开发平台真的是太强大了,它为每一个开发者都做了太多太多,但是我们不仅要知道怎么用,而且也应该知道其中的内部到底包含了什么.本篇文章不仅讲一些 ...
- 理解学习Springboot(二)
一.关闭banner 如果不想看到任何的banner,可以将其关闭. 当然也可以自己自定义banner,http://patorjk.com/software/taag/#p=display& ...
- flex布局与ellipsis冲突问题
在flex布局里使用text-overflow: ellipsis;发现没有省略. 解决方案 .g-flex-c{ flex: 1; min-width: 0; }
- 爬虫2.4-scrapy框架-图片分类下载
目录 scrapy框架-图片下载 1 传统下载方法: 2 scrapy框架的下载方法 3 分类下载完整代码 scrapy框架-图片下载 python小知识: map函数:将一个可迭代对象的每个值,依次 ...
- CentOS7部署ELK5.2
原文发表于cu:2017-02-10 参考文档: Elasticsearchyum文档:https://www.elastic.co/guide/en/elasticsearch/reference/ ...
- PHP开发中常见的漏洞及防范
PHP开发中常见的漏洞及防范 对于PHP的漏洞,目前常见的漏洞有五种.分别是Session文件漏洞.SQL注入漏洞.脚本命令执行漏洞.全局变量漏洞和文件漏洞.这里分别对这些漏洞进行简要的介绍和防范. ...
- Python:print()函数的几个常用参数
1.参数sep:设置输出字符产之间的字符串.默认是空格 name='Tomwenxing' age=' job='student' print(name,age,job) print(name,age ...
- PHP 函数总结
感觉对函数了解的不够深,从头到尾梳理一遍(更新中....) 1,class_exists(),interface_exists(),method_exists(),get_class(),get_pa ...
- oracle执行完shutdown immediate后登陆不上了怎么办
在sqlplus 里登录后使用shutdown immediate 关闭数据库后若没有使用startup重启数据库就退出窗口则会出现下一次重启sqlplus窗口时无法登录的现象,解决方法如下 一.启动 ...
- nodepad++ 格式化xml插件
1.用插件管理器安装xmltools插件 2.使用如下菜单格式化xml: 所有插件下载地址: http://sourceforge.net/projects/npp-plugins/files/