> 技术文档 > C++之vector类的代码及其逻辑详解(上)

C++之vector类的代码及其逻辑详解(上)


1. vetcor介绍及使用方法

1.1 什么是vector

1. vetcor是一种可以自己扩容的数组(扩大后不会变小)。

2. vector采用的连续存储空间来存储元素,这意味着我们可以小标的方式来对其进行访问。

3. vetcor在进行扩容的时候会尝试直接在其后面的空间进行扩容,如果后面的空间被其他的数据给使用了,那么它会寻找一块足够存放的下扩容候的它的空间,然后把自己转移进那块空间(一般来说vetcor在设计的时候都是进行2倍扩容)。

4. 因为vector在实现的时候我们会使用一个双指针分别指向它的头(begin())和它的尾(end())。所以它的尾插效率会很高,而它的头插效率会很低(因为需要把里面的元素一个个都向后移动一位)。

PS:在vector里面begin()是指向第一个元素的,而end()则是指向最后一个的下一个。

1.2 vetcor的使用

函数名字

作用 begin() 返回头部的位置 end() 返回最后一个的下一个的位置 swap() 交换两个vector的头和尾(即交换两个vector的元素) reserve() 提前开辟空间,避免频繁扩容 push_back() 尾插 capacity() 返回vector的capacity size() 返回vector的size [] 这个就是在里面填下标,然后就可以返回下标对应的元素 resize() 改变size的大小(大于size就扩容size,小于size就删除多余的元素并减小size) erase() 删除单个元素或者多个元素(填入要删除的开头和结尾) pop_back() 尾删 insert(it,x) 在指定位置it上插入元素x empty() 判断是否为空,为空返回true,否则返回false