STL vector

来源:互联网 发布:学校结核病管理网络 编辑:程序博客网 时间:2024/06/05 04:43

一,vector与array之间的区别

vector与array非常的相似,两者唯一的差别在于内存空间的使用。array是静态空间,一旦配置就不能改变;vector是动态空间,随着元素的加入,它会动态的扩充自己的内存空间。实现vector的关键技术,就是对其占用的内存空间的控制以及重新配置时元素移动效率。


二,vector的迭代器

vector的底层是用一段连续的内存空间来存储容器中的元素,普通的指针都可以作为vector的迭代器而满足所有的条件因为迭代器所需要的操作,例如:*、->、++、--、+、- 等,普通的指针都具备这些功能。vector支持随机存取,而普通的指针就具备这些功能,所以vector的迭代器是普通的指针。


三,vector的内存管理

在vector中添加元素时,如果超过了它的容量,会导致内存的重新配置。重新配置内存并不是在原来的内存的后面添加新的空间,而是以原大小的两倍配置新的内存空间,然后将原来的内容拷贝到新的内存空间,之后释放掉原来的内存空间。因此,对vector的任何操作,一旦导致内存空间的重新配置,指向原vector的所有的迭代器都将失效。


四,vector的基本操作

1,初始化操作

int nums[] = {1, 2, 3, 4, 5};vector<int> vect(nums, nums + 5);


2,添加与获取元素

//在vector的尾部添加一个元素vect.push_back(6);//获取头、尾的元素int y = vect.front();int x = vect.back();


3,删除容器中的元素

//直接弹出容器尾部的元素,但是不会返回这个元素,pop_back()的返回值为voidvect.pop_back();//删除指定位置的元素vect.erase(vect.begin());


4,其他常用操作

//判断容器是否为空,如果容器中没有元素返回true,否则返回falsevect.empty();//获取容器中元素的数目int size = vect.size();

原创粉丝点击