vector

一,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 vect(nums, nums + 5);

 

2,添加与获取元素

//在vector的尾部添加一个元素
vect.push_back(6);

//获取头、尾的元素
int y = vect.front();
int x = vect.back();

 

3,删除容器中的元素

//直接弹出容器尾部的元素,但是不会返回这个元素,pop_back()的返回值为void
vect.pop_back();

//删除指定位置的元素
vect.erase(vect.begin());

 

4,其他常用操作

//判断容器是否为空,如果容器中没有元素返回true,否则返回false
vect.empty();

//获取容器中元素的数目
int size = vect.size();

 

你可能感兴趣的:(C++,STL)