C++面试题:介绍一下STL,STL如何实现vector
来源:互联网 发布:小米盒子刷linux 编辑:程序博客网 时间:2024/04/18 16:05
STL(Standard Template Library),即标准模板库,是一个具有工业强度的,高效的C++程序库。它被容纳于C++标准程序库中,包括容器、算法、迭代器组件。
vector内部使用动态数组的方式实现的。如果动态数组的内存不够用,就要动态的重新分配,一般是当前大小的两倍,然后把原数组的内容拷贝过去。所以,在一般情况下,其访问速度同一般数组,只有在重新分配发生时,其性能才会下降。注意vector的size()和capacity()是不同的,前者表示数组中元素的多少,后者表示数组有多大的容量。由上面的分析可以看出,使用vector的时候需要注意内存的使用,如果频繁地进行内存的重新分配,会导致效率低下。它的内部使用allocator类进行内存管理,程序员不需要自己操作内存。
vector内部使用动态数组的方式实现的。如果动态数组的内存不够用,就要动态的重新分配,一般是当前大小的两倍,然后把原数组的内容拷贝过去。所以,在一般情况下,其访问速度同一般数组,只有在重新分配发生时,其性能才会下降。注意vector的size()和capacity()是不同的,前者表示数组中元素的多少,后者表示数组有多大的容量。由上面的分析可以看出,使用vector的时候需要注意内存的使用,如果频繁地进行内存的重新分配,会导致效率低下。它的内部使用allocator类进行内存管理,程序员不需要自己操作内存。
vector其中一个特点:内存空间只会增长,不会减小,援引C++ Primer:为了支持快速的随机访问,vector容器的元素以连续方式存放,每一个元素都紧挨着前一个元素存储。设想一下,当vector添加一个元素时,为了满足连续存放这个特性,都需要重新分配空间、拷贝元素、撤销旧空间,这样性能难以接受。因此STL实现者在对vector进行内存分配时,其实际分配的容量要比当前所需的空间多一些。就是说,vector容器预留了一些额外的存储区,用于存放新添加的元素,这样就不必为每个新元素重新分配整个容器的内存空间。
0 1
- C++面试题:介绍一下STL,STL如何实现vector
- C++面试题:介绍一下STL,STL如何实现vector
- C++面试题:介绍一下STL,STL如何实现vector
- C++面试题:介绍一下STL如何实现vector
- C++面试题:介绍一下STL,具体说明STL如何实现vector。
- C++STL常见面试题
- C++STL常见面试题
- C++STL常见面试题
- C++STL常见面试题
- 【STL C++】简单实现vector
- C++STL vector介绍与使用方法
- C++STL中的vector简要介绍
- C++STL常见面试题1
- c++STL常见面试题2
- STL vector 容器介绍
- STL vector 容器介绍
- STL vector 容器介绍
- STL vector 容器介绍
- spring+mybatis+ehcache 注解
- CUDA内存访问
- Oracle表空间
- “五险一金”的深入解析,上班的一定要看。。。
- 【自由谈】城域网IPv6过渡技术——4v6场景技术总结(2)
- C++面试题:介绍一下STL,STL如何实现vector
- 关于matlab中的colormap问题
- android 网络请求代理
- flume ng 1.3 安装配置方法
- 读朱兆祺攻破C语言之七---结构体、联合体
- 扁鹊的医术
- IOS php 服务器 客户端 准备工作
- libcurl-2
- 为linux添加硬盘