关于STL中vector容器的一些总结
本文导语: 1.vector的简单介绍 vector作为STL提供的标准容器之一,是经常要使用的,有很重要的地位,并且使用起来也是灰常方便。vector又被称为向量,vector可以形象的描述为长度可以动态改变的数组,功能和数组较为相似。实际上更专业...
1.vector的简单介绍
vector作为STL提供的标准容器之一,是经常要使用的,有很重要的地位,并且使用起来也是灰常方便。vector又被称为向量,vector可以形象的描述为长度可以动态改变的数组,功能和数组较为相似。实际上更专业的描述为:vector是一个多功能的,能够操作多种数据结构和算法的模板类和函数库,vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。(注:STL的容器从实现的角度讲可以说是类模板(class teplate)。)
那么vector和数组的主要区别是什么呢??这对于理解vector是很有帮助的~~~~
数组:分配的是静态空间,一般分配了就不可以改变,就像我们熟知的定义了一个数组,那么数组的长度就不可以改变了,我们也不可以进行越界访问,但是编译器不检查越界,这一点在我们编程的时候要尤为注意(很多都可能会烦这样的错误!!)。一般申请的数组长度不能满足我们的要求了,我们要重新申请大一点数组,然后把原数组中数据复制过来。
vector:分配的是动态空间,即:我们发现在声明vector容器的时候也可以不指定容器的大小,vector是随着元素的加入,空间自动扩展的。但是,我们必须要负责任的肯定vector分配的空间是连续的,也就是支持数组中的下标随机访问,实际上vector的实现机制是:预留一部分空间,而且预留空间的大小是按一定比率增长的,如果空间不够用的话,要保证连续,就必须重新new一片空间,然后将原有元素移动到新空间,同时预留新的空间(并且新分配的空间比原来分配的空间),最后将原来的那部分空间释放掉。这样预留空间的好处就是不用每次向vector中加元素都重新分配空间。
2.vecotr容器中常用的函数
2.1.vector容器的构造函数
vector容器的声明方式主要包括一下几种:
--------------------------------------------------------------------------------
vector v ,创建一个空的vector。
vector v1(v) ,复制一个vector。
vector v(n) ,创建一个vector,含有n个数据,数据均已缺省构造产生。
vector v(n, elem) ,创建一个含有n个elem拷贝的vector。
vector v(beg,end) ,创建一个以[beg;end)区间的vector。
v.~ vector () ,销毁所有数据,释放内存。
--------------------------------------------------------------------------------
下面用一段代码来演示几种常用的声明vector的的方式:
#include
#include
using namespace std;
int main()
{
vector::iterator iter;
//第一种方式
vector v1;
v1.push_back(1);
v1.push_back(2);
v1.push_back(3);
cout