当前位置:网站首页>STL容器(一)--vector
STL容器(一)--vector
2022-04-21 19:58:00 【菠萝印象威】
STL容器之vector
顺序容器 vector(矢量容器)deque(双端队列容器)list(双向列表)
关联容器 set(单重集合)multimap(多重映射表)
容器适配器 stack(栈)queue(队列) prority_queue(优先级队列)
1.包含在头文件#include<vector>
2.功能 模拟动态数组
3.实现 开辟一定大小的数组,随元素的增加而增加,如果空间不够,自动采取扩容机制。
扩容规则
以原空间大小的2倍重新开辟一块空间,将旧空间的元素挪到新空间上,再继续添加元素,一直遵循每次扩容大小是原来的两倍
常用函数 vector vec;
vector底层是一个数组,所以内存是连续的,可以采取下标访问方式,尾插和尾删的时间复杂度为O(1),所以vector提供了push_back()、pop_back()
vec.begin():指向vec的首元素
vec.end();指向vec尾元素的后一个位置 这个函数用来确定vec元素的范围。
vec.front();获取头部元素
vec.back();获取尾部元素
vec.size():表示vec中实际元素的个数
vec.capacity():返回vec实际所能容纳的元素大小
vec.max_size():表示返回vector最大容量
vec.insert(pos,elem)//pos是vector的插入元素的位置
vec.insert(pos,n,elem)//在pos位置上的插入n个元素elem
vec.insert(pos,begin,end)//
vec.erase(pos)//移除pos上的位置元素,返回下一个数据的位置
vec.erase(begin,end)//移除[begin,end]区间的数据,返回下一个元素的位置
reverse(pos1,pos2)//将vector中的pos1~pos2的元素逆序存储
vector初始化方式
vector vec;//默认方式初始化底层没有为其分配内存空间。
vector vec1(10);//指定了开始的容量为10,默认为0。
vector vec2(10,20);//指定了开始的容量10和每个格子的默认值为20
vector vec3(vec3);//调用拷贝构造函数,用同类型已经存在的对象构造同类型的新对象。
int array[10]={1,2,3,4,5,6,7,8,9,10}
vector vec4(array,array+10);//使用数组区间传数组实现vector初始化。
·vector元素遍历
使用迭代器
迭代器:正向迭代器iterator 反向迭代器reserve_iterator
常量正向迭代器 const_iterator
常量反向迭代器 const_reserve_iterator
vector<int>::iterator it =vec.begin();
for(;it!=vec.end();++it)
{
cout<<*it<<endl;
}
vector中插入元素
push_back()
insert(vec,begin(),val);头插
insert(vec.end(),val);尾插
vetcor删除元素
删除指定元素
删除重复元素,只保留一个
vec.pop_back();//从尾部移除一个元素
vec.clear();//清空vector中的元素
vector vec;
vec.push_back(2);//尾插2
vec.push_back(3);//尾插3
int array[5]={1,2,3,4,5};
vector<int> v1(array,array+5);
reverse(v1.begin(),v1.end());//反转数组
v1.insert(v1.end(),9);//尾插
v1.insert(v1.begin(),8);//头插
vector<int>::iterator it =v1.begin();
reverse(it+1,it+4);//反转第一个和第五个元素
v1.insert(it+1,6);//vec[1]的位置插入6
for(it =v1.begin();it!=v1.end();it++)
{
cout<<*it<<endl;
}
版权声明
本文为[菠萝印象威]所创,转载请带上原文链接,感谢
https://blog.csdn.net/baidu_41191295/article/details/115873149
边栏推荐
- Mysql错误2005
- 05. Prototype mode
- 什么是注解
- 如何判斷Int型值的第nbit比特是否是1還是0
- 【Gradle】问题解析+下载安装+环境配置+验证安装
- 艾尔登法环“无法加载保存数据”解决方法
- 如何在不加锁的情况下解决线程安全问题
- What exactly is a vector?
- Solutions informatiques pour les entreprises manufacturières haut de gamme, maintenance prédictive de l'équipement, des données et du système de la plate - forme de commerce électronique industriel
- Digital business cloud: analyze the current situation of enterprise procurement management and promote the optimization and upgrading of enterprise procurement mode
猜你喜欢
随机推荐
Wild road play QT, episode 31, glass cleaning game
flinkx部署
Unity Socket
Use cmake to build / cmake Command Reference
手动创建线程池
juc-Queue接口以及其实现类
Lenovo announced the new progress of ESG: it promised that 100% of all computer products would contain recycled plastics by 2025
Comment déterminer si le BIT nbit de la valeur de type int est 1 ou 0
PostgreSql 连接访问控制
High performance distributed cache redis - redis infrastructure and cache principle - continuous update
Solutions informatiques pour les entreprises manufacturières haut de gamme, maintenance prédictive de l'équipement, des données et du système de la plate - forme de commerce électronique industriel
【verbs】使用ibverbs api注意事项|libibverbs 中 fork() 支持的状态如何?
[verbs] precautions for using ibverbs API | what is the status of fork() support in libibverbs?
How to restore the deleted photos? Four schemes, which is the official guide
如何判断Int型值的第nbit位是否是1还是0
高端制造业企业信息化解决方案,工业电商平台设备、数据、体系预测性维护
【 summer internship 】
Matlab中complex函数的使用
知道创宇发布重磅战略方案,构建持续交火的实战化防御体系
Create thread pool manually






