[知识点]C++中STL容器之vector

零、STL目录html

  一、容器之mapnode

  二、容器之vector数组

  三、容器之set函数

 

1、前言spa

  关于STL和STL容器的概念参见STL系列第一篇——map(见上)。今天介绍第二个成员——vector。code

 

2、用途htm

  vector的本质是数组,但更为灵活,高级。数组在定义时须要肯定范围,可能存在浪费内存或者越界两大问题,而能够动态拓展的vector完美解决了这两个问题,它至关因而能够分配拓展的数组。vector支持各类数据类型。blog

 

3、构造与功能排序

一、构造内存

struct node {
    int x;
    char y; 
};

vector <int> a;
vector <string> b;
vector <node> c;

vector <int>::iterator it;

  支持各类数据类型,结构体亦可。迭代器再也不介绍,详情参见map(见上)。

 

二、功能

  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”。

相关文章
相关标签/搜索