C++:vector的push_back时间复杂度分析

news/2025/3/5 10:10:06/

引导示例

#include <iostream>
#include <vector>int main() {std::vector<int> v;std::cout << v.capacity() << " ";int last = 0;for (int i = 1; i <= 10; i++) {v.push_back(1);std::cout << v.capacity() << " ";}return 0;
}

我们在C++17下运行上面的代码,可以得到如下的结果:

0 1 2 4 4 8 8 8 8 16 16

在这里插入图片描述
初步观察到,当进行push_back时,如果容器的大小达到容量,就会再开辟一个新的内存


复杂度分析:

假设容量从 1 开始,逐步倍增到 2, 4, 8, …, 2^k;总共进行n次插入。

每次扩容的代价为:
在这里插入图片描述

总的扩容代价:(求和公式)
在这里插入图片描述

加上n次插入:
总的代价为 (3n-1) / n = O(3) = O(1)


http://www.ppmy.cn/news/1576793.html

相关文章

PX4中的uavcan进程

概述 PX4 中的 uavcan 模块梳理起来是有点杂的&#xff0c;就像 commander 中的内容一个较为杂乱。如果要梳理划分的话&#xff0c;可以按照主题消息的类型来划分&#xff0c;PX4 中的 uavcan 模块需要接收处理的消息主题非常多&#xff0c;因此将其主要分为三类&#xff1a; …

web安全渗透测试 APP安全渗透漏洞测试详情

前言 小小白承包了一块20亩的土地&#xff0c;依山傍水&#xff0c;风水不错。听朋友说去年玉米大卖&#xff0c;他也想尝尝甜头&#xff0c;也就种上了玉米。 看着玉米茁壮成长&#xff0c;别提小小白心里多开心&#xff0c;心里盘算着玉米大买后&#xff0c;吃香喝辣的富贵…

Scaling Laws(缩放法则)详解

Scaling Laws&#xff08;缩放法则&#xff09;详解 1. 定义与核心概念 Scaling Laws&#xff08;缩放法则&#xff09;描述的是模型性能&#xff08;如准确率、任务表现&#xff09;与计算资源&#xff08;模型参数量、训练数据量、训练时间&#xff09;之间的数学关系。其核…

PyCharm接入本地部署DeepSeek 实现AI编程!【支持windows与linux】

今天尝试在pycharm上接入了本地部署的deepseek&#xff0c;实现了AI编程&#xff0c;体验还是很棒的。下面详细叙述整个安装过程。 本次搭建的框架组合是 DeepSeek-r1:1.5b/7b Pycharm专业版或者社区版 Proxy AI&#xff08;CodeGPT&#xff09; 首先了解不同版本的deepsee…

Qt 文件操作+多线程+网络

文章目录 1. 文件操作1.1 API1.2 例子1&#xff0c;简单记事本1.3 例子2&#xff0c;输出文件的属性 2. Qt 多线程2.1 常用API2.2 例子1&#xff0c;自定义定时器 3. 线程安全3.1 互斥锁3.2 条件变量 4. 网络编程4.1 UDP Socket4.2 UDP Server4.3 UDP Client4.4 TCP Socket4.5 …

WDM_OTN_基础知识_波分系统基本构成-无源器件

在波分系统中通常将发光,对光进行放大以及产生光电转换的器件称之为有源器件&#xff0c;例如光放&#xff0c;激光器&#xff0c;与此相反&#xff0c;将那些不发光&#xff0c;不对光进行放大&#xff0c;也不产生光电转换的器件称之为无源器件&#xff0c;波分系统中的无源器…

【Verilog编程】基于QUartus和Modesim的4位全加器和3-8译码器

目录 一、数字逻辑电路基础知识复习 1.1与逻辑和与门电路 1.2或逻辑和或门电路 1.3非运算 1.4逻辑代数运算 1.4.1基本公式 1.4.2逻辑函数的常见表达式 1.5组合逻辑电路的例题 二、3-8译码器和4位全加器Verilog编程复习 2.1 3-8译码器Logsim 和Verilog的电路图对比 2.…

24、《Spring Boot 的 Actuator 监控深度解析》

Spring Boot 的 Actuator 监控深度解析 引言 在微服务架构盛行的今天&#xff0c;应用监控已成为保障系统可靠性的关键环节。Spring Boot Actuator 作为官方提供的监控解决方案&#xff0c;通过暴露丰富的端点&#xff08;Endpoints&#xff09;帮助开发者实时掌握应用运行时…