考虑如下的代码输出:

int N = 100;
vector<int> v;
set<int> s;
for (int i = 0; i < N; ++i)
{s.insert(v.capacity());v.push_back(i);
}
for (auto& e : s)cout << e << " ";
cout << endl;

可以看到空间的变化是0,1,2,4,8,16,…,128.(注:GCC 编译器是如此,vc 不是,二者提供了不同的 vector 实现)。

这就需要考虑到当空间不足时,需要开辟新的内存并且发生元素的copy(原始空间的释放). 一般情况下(GCC)开辟的空间是原来的2倍。那么平均的添加时间是:

1N(1+2+4+⋯+2log⌈N⌉)

\frac1N\left ( 1+2+4+\cdots+2^{\log \lceil N\rceil}\right )

log\log 为以二为底的对数,⌈⌉\lceil \rceil 表示向上取整;

平均下来依旧是O(N)。

[面试] C++ STL(一)—— 向一个vector中添加N个元素,平均的添加的性能是?相关推荐

  1. 用一个vector删除另一个vector中的元素

    为了解决项目中的一个问题,需要 用一个vector中指定的元素删除另一个vector 下面是我采用的解决方法: 比如说 有两个vector<int> vect1和vect2 vect1 = ...

  2. python统计列表中元素个数_python中计算一个列表中连续相同的元素个数方法

    python中计算一个列表中连续相同的元素个数方法 最简单的例子: a = [1,1,1,1,2,2,2,3,3,1,1,1,3] # 问:计算a中最多有几个连续的1 很明显,答案是4 如果用代码实现 ...

  3. 一个排列中任意两个元素对换,排列改变奇偶性。

    一个排列中任意两个元素对换,排列改变奇偶性. 非常简单的证明 过程: 一.相邻两元素对换 对于排列a1a2a3a4a5, 对换a3和a4, 形成排列a1a2a4a3a5, 其它元素与a3和a4的次序不 ...

  4. pta数据结构实验在数组中查找指定元素_如何从一个数组中查找指定的元素,并返回这个元素在数组中的位置...

    展开全部 和Vector都是使用Objec的数组形式来存储的.当你向这两种类型中增加元素的时候,如果元素的数目超出e68a84e8a2ad62616964757a686964616f313332646 ...

  5. 对于vector中高效删除中间元素的技巧

    众所周知,vector是连续存储空间,只提供高效的尾部删除方法pop_back() ,在中间删除的效率很低,那么如果大家想快速删除中间元素该如何实现? 话不多说,看代码: //移除vector元素,最 ...

  6. 判断vector中是否存在某元素的多种方法

    工作中经常遇见的一个场景:判断某个元素是否在vector容器中. 当然,会有很多种方法,由内置数据类型到自定义数据类型,下面简单总结一下. [1]内置数据类型 代码胜过一切文档.如下示例代码: #in ...

  7. 5种方式,判断一个数组中是否包含某个元素

    点击关注公众号,实用技术文章及时了解 来源:xiaoer.blog.csdn.net/article/details/88125957 方法一.使用List public static boolean ...

  8. vector中find 的用法

    vector没有自带的find函数,需要用普通的find函数,使用如下: vector<string> nameList1; //给nameList1赋值 string name; if( ...

  9. Java中如何循环删除一个集合(如List)中的多个元素

    今天我需要从一个java的集合中,根据另一个集合的内容,删除第一个集合中不特定的元素.这看上去非常简单,但却遇到了问题.这就是"Java中如何删除一个集合中的多个元素"的问题. 这 ...

最新文章

  1. GAN和PS合体会怎样?东京大学图像增强新研究:无需配对图像,增强效果还可解释...
  2. Python入门100题 | 第078题
  3. 第七天2017/04/14(C++对C的扩充,C++与C的区别,C++的基础知识)
  4. P3731 二分图匹配必经边
  5. golang日期时间格式format()
  6. Web前端开发笔记——第二章 HTML语言 第一节 标签、元素、属性
  7. WPF 读取Docx文件并显示(附下载链接)
  8. TCP/IP详解卷1 - wireshark抓包分析
  9. 未经处理的异常:System.Net.Sockets.SocketException: 以一种访问权限不允许的方式做了一个访问套接字的尝试...
  10. 蓝桥杯 PREV-27 历届试题 蚂蚁感冒
  11. [Python]一步步安装numpy,matplotlib
  12. int与String互相转换
  13. myBatis约束文档
  14. 关于名为民间借贷实为诈骗案件的讨论
  15. 层间距离对ct图像的影响_CT图像影响因素
  16. 使用Webupload上传图片到FastDFS分布式文件系统
  17. 波浪下划线怎么设置_如何在word中的文字下面加波浪线
  18. LoRa的码片速率chip rate
  19. 产品经理(助理)任职要求
  20. 抖音3d相册html代码,抖音3D立体相册表白代码.doc

热门文章

  1. java.io.IOException: output.properties data exceeds its limit [2048] hue的调度
  2. spark读写hive数据
  3. LeetCode 303. 区域和检索 - 数组不可变(动态规划)
  4. OpenCV精进之路(二十):工具——图像标注小工具
  5. 概率论概念及机器学习中样本相似性度量之马氏距离
  6. VC、VB、Delphi …… 你该学哪个?
  7. 计算机核心期刊、学报一览
  8. Django引入静态文件
  9. Elasticsearch搜索类型(query type)详解
  10. 关于configure: error: no acceptable C compiler found in $PATH