Vector 容器
1 vector基本概念
功能
vector数据结构和数组十分相似,也称为单端数组
vector和普通数组的区别
不同之处在于数组是静态空间,而vector可以动态扩展
动态扩展
并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间
- vector容器的迭代器是支持随机访问的迭代器
2 vector构造函数
功能描述
创造vector容器
函数原型
vector <T> v
//采用模板实现类实现,默认构造函数vector(v.begin(),v.end());
将v[ begin(), end() ) 区间中的元素拷贝给本身vector(n,elem);
//构造函数将n个elem拷贝给本vector(const vector &vec);
//拷贝构造函数
1 | void printVector(vector <int>& v) { |
3 vector赋值操作
- 函数原型
vector& operator=(const vector &vec)
assign(beg,end);
//给[beg, end)区间中的数据拷贝复制给本身assign(n,elem)
//将n个elem拷贝赋值给本身
1 | void test02() { |
4 vector容量和大小
- 函数原型
empty();
//判断容器是否为空capacity();
//容器的容量,容量大于等于长度size();
//返回容器中元素的个数resize(int num);
//重新指定容器的长度为num,若容器边长,则以默认值填充新位置。如果容器变短,则末尾超出容器长度的元素被删除resize(int num,elem)
//重新指定容器的长度为num,若容器变长,则以elem值填充新位置。若容器变短,则末尾超出容器长度的元素被删除。
1 | void test03() { |
5 vector插入和删除
- 函数原型
push_back(elem);
//尾部插入元素pop_back();
//删除最后一个元素insert(const_iterator pos,ele);
//迭代器指向位置pos插入元素eleinsert(const_iterator pos,int count,ele);
//迭代器指向位置pos插入count个元素eleerase(const_iterator pos);
//删除迭代器指向的元素erase(const_iterator start,const_iterator end);
//删除迭代器从start到end之间的元素clear()
;//删除容器中所有的元素
1 | void test04() { |
6 vector数据存取
- 函数原型
at(int idx);
//返回索引 idx 所值的数据operator[];
//返回索引 idx 所指的数据front();
//返回容器中第一个数据back();
// 返回容器中最后一个数据元素
1 | void test05() { |
7 vector互换容器
函数原型
swap(vec);
1 | //巧用swap可以收缩内存空间 |
运行结果:
1 | v1的容量为138255 |
8 vector预留空间
功能描述
减少vector在动态扩展容量时的扩展次数
函数原型
reserve(int len);
//容器预留len个元素长度,预留位置不初始化,元素不可访问
1 | void test08() { |
运行结果:
1 | 动态扩展次数:15 |
使用reserve后
1 | v.reserve(300);//预留空间 |
运算结果
1 | 动态扩展次数:1 |