<二>vector向量容器
2023-02-18 16:33:46 时间
底层数据结构:动态开辟的数组,每次以原始空间2倍扩容
vector
增加
vec.push_back(100);容器末尾加元素 时间负责度O(1) 可能导致容器扩容
容器中的,对象的构造析构,内存的开辟释放,通过什么来实现?
容器的空间配置器allocator
allocate
deallocate
construct
destory
vec.insert(iterator,20);在迭代器指定位置插入元素,花费的时间和需要移动的元素个数有关O(N),可能导致容器扩容
删除
vec.pop_back();末尾删除元素 O(1)
vec.erase(iterator);删除迭代器指定的位置的元素, 花费的时间和需要移动的元素个数有关O(N)
查询
operator[] 可以通过数组下标实现随机访问 vec[5] 时间发给O(1);
iterator迭代器进行遍历
find , for_each , foreach=>iterator
注意:对容器进行连续的插入或删除操作,insert/erase,一定要更新迭代器,否则第一次
insert或erase完后,迭代器就失效了.
常用方法介绍
size();返回有效元素个数
empty();是否为空
reserve(20) 给verctor预留空间,只给容器底层开辟指定大小的内存空间,并不会添加新的元素.
resize(20):容器扩容用的,不仅给容器底层开辟指定大小的内存空间,还会添加元素
swap: 两个容器进行元素交换
vector
vec.reserve(20) ;//预留内存空间,没有添加元素
当我们预先知道元素个数时,可以避免扩容带来效率上的降低
相关文章
- 【单元测试】NUint使用详解及Visual Studio配置
- 【AutoMapper官方文档】DTO与Domin Model相互转换(下)
- 【续集】在 IIS 中部署 ASP.NET 5 应用程序遭遇的问题
- 程序员眼中的 SQL Server-执行计划教会我如何创建索引?
- 死去活来,而不变质:Domain Model(领域模型) 和 EntityFramework 如何正确进行对象关系映射?
- 初试Code First(附Demo)
- Spring Cloud Eureka 自我保护机制
- DDD 领域驱动设计-商品建模之路
- 手机适配浏览,所引发的一场“头脑风暴”
- 爱与恨的抉择:ASP.NET 5+EntityFramework 7
- ELK 架构之 Elasticsearch 和 Kibana 安装配置
- EntityFramework 7 开发纪录
- DDD 领域驱动设计-看我如何应对业务需求变化,愚蠢的应对?
- 设计窘境:来自 Repository 的一丝线索,Domain Model 再重新设计
- 谈谈小菜眼中的博客园(想法和建议)
- Docker 三剑客之 Docker Swarm
- ASP.NET Core 阶段性总结
- 坎坷路:ASP.NET Core 1.0 Identity 身份验证(中集)
- DDD 主题交流会总结及计划
- Visual Studio for Mac 初体验