C++的vector优化
1、C++中的动态数组一般是特指vector类
2、vector需要优化的原因之一是当我们push_back元素到数组中时,如果原来分配给动态数组的内存不够用了,那么就会找一块更大的内存空间分配给数组,把旧的内容复制到新的内存中去,这就是导致程序性能变慢的原因之一。
了解我们的环境,是优化过程中最重要的事情之一
以下代码会复制3次
#include<iostream>
#include<string>
#include<vector>struct Vertex
{float x,y,z;Vertex(float x,float y,float z):x(x),y(y),z(z){}Vertex(const Vertex& vertex):x(vertex.x),y(vertex.y),z(vertex.z){std::cout<<"Copied!"<<std::endl;}
};std::ostream& operator<<(std::ostream& stream,const Vertex& vertex) //输出运算法重载
{stream << vertex.x <<", "<< vertex.y <<", "<< vertex.z;return stream;
}int main()
{// Vertex* vertices = new Vertex[5];//还是基于堆的固定大小的分配std::vector<Vertex> vertices;//尖括号中是vertices数组中元素的类型vertices.push_back({1,2,3});vertices.push_back({4,5,6});//向数组中添加元素vertices.push_back({7,8,9});std::cin.get();
}

以下代码会复制6次
#include<iostream>
#include<string>
#include<vector>struct Vertex
{float x,y,z;Vertex(float x,float y,float z):x(x),y(y),z(z){}Vertex(const Vertex& vertex):x(vertex.x),y(vertex.y),z(vertex.z){std::cout<<"Copied!"<<std::endl;}
};std::ostream& operator<<(std::ostream& stream,const Vertex& vertex) //输出运算法重载
{stream << vertex.x <<", "<< vertex.y <<", "<< vertex.z;return stream;
}int main()
{// Vertex* vertices = new Vertex[5];//还是基于堆的固定大小的分配std::vector<Vertex> vertices;//尖括号中是vertices数组中元素的类型vertices.push_back(Vertex(1,2,3));vertices.push_back(Vertex(4,5,6));//向数组中添加元素vertices.push_back(Vertex(7,8,9));std::cin.get();
}

为什么会发生这种情况呢?
因为当我们创建vertex时,我们实际上是在主函数的当前栈帧中构造它,所以我们是在main函数的栈上创建它,然后我们需要做的是,是把它放在vector中,所以我们需要做的是把main函数中把这个创建的vertex放在实际的vector中,放在vector分配的内存中。
所以我们可以优化的事情之一是:
事先分配好内存


我们可以在适当的位置(也就是vector分配的内存)构造那个vertex
emplace_back()函数就是在告诉vector:嘿,你给我用1,2,3这些参数创建一个vectex类。这样就是在vector所在的内存创建,从而避免了复制。

相关文章:
C++的vector优化
1、C中的动态数组一般是特指vector类 2、vector需要优化的原因之一是当我们push_back元素到数组中时,如果原来分配给动态数组的内存不够用了,那么就会找一块更大的内存空间分配给数组,把旧的内容复制到新的内存中去,这就是导致程…...
基于飞腾平台的OpenCV的编译与安装
【写在前面】 飞腾开发者平台是基于飞腾自身强大的技术基础和开放能力,聚合行业内优秀资源而打造的。该平台覆盖了操作系统、算法、数据库、安全、平台工具、虚拟化、存储、网络、固件等多个前沿技术领域,包含了应用使能套件、软件仓库、软件支持、软件适…...
pyside6与协程
目录 一、常见错误 错误一、使用协程函数作为槽函数。 错误二、在Qt循环中创建新的loop 二、解决方法: ①安装库qasync ②修改Qt入口 ③异步槽函数 ④异步函数 ⑤整体示例 一、常见错误 错误一、使用协程函数作为槽函数。 这样是肯定是不行ÿ…...
手机如何五开玩梦幻西游端游?用GameViewer远程手机免费畅玩梦幻西游
用手机就能免费玩梦幻西游端游,还可以随时查看挂机进度! 想要实现这一点,就用网易GameViewer远程,而且不光手机可以玩梦幻西游端游,平板也能免费玩,并为你实现五开玩梦幻西游端游。 那么,通过Ga…...
【笔记】X射线物理基础
一、X射线衍射分析简史 1895年X射线发现 1896 年 2 月对骨折的观察:G.和 E. Frost是第一个使用 X 射线进行医疗用途 1897 年法国海关官员的行李扫描。 X射线衍射理论1 X射线衍射理论2 元素的特征X射线 X射线光电子的应用 电磁波的粒子属性 X射线层析成像法 X-ray…...
Vue3与Flask后端Demo
文章目录 准备工作Flask 后端设置Vue3 前端设置跨域问题测试 准备工作 安装开发环境 安装 Python(推荐 Python 3.8 或更高版本)。安装 Node.js(推荐 LTS 版本)。安装 PyCharm(用于 Flask 开发)和 VSCode&am…...
第一本RAG书籍《大模型RAG实战》出版!
随着ChatGPT的爆火,推动了新一轮的AI技术进步。但大模型自身存在幻觉、知识更新难等问题,阻碍了其直接进行落地应用。RAG(Retrieval-Augmented Generation)技术将LLM与文本信息检索相结合,解决了在一些场景下模型知识不…...
Pandas -----------------------基础知识(四)
自定义函数 Series 加载数据 import pandas as pd df pd.DataFrame({Age: [20, 25, 30, 35, 40]}) df # 目标: 让 Age 列 的每个元素 num1 num2 def add_nums(x,num1,num2):return x num1 num2 df[Age].apply(add_nums,num1 2,num2 3) 法二 df[Age].apply(lambda x ,num1…...
鼎阳加油-IOC关键技术问题的解决记
鼎阳SDS6204示波器EPICS IOC的搭建-CSDN博客 这款示波器在labview下工作的很好,以前搭建逐束团3D系统时连续几个月不间断的工作连接从没断过线,并做过速率测试,单通道时10Hz的波形更新速率都可以达到: 鼎阳SDS6204示波器波形读取…...
【HarmonyOS】TaskPool非阻塞UI
TaskPool方法不会阻塞UI,如果做上传图片的功能加载Loading记得使用TaskPool,Promise、Async/Await都会阻塞UI 【引言】 发现Promise可能会阻塞UI,尝试使用async或await,但发现它们仍然会导致阻塞。后来看到chaoxiaoshu回复的Tas…...
关于使用/bin/sh -c 用于Dockerfile的Entrypoint的问题
问题描述 相同的dockerfile,使用不同的基础镜像制作镜像1号进程不相同 ENTRYPOINT都是: /bin/sh -c pre-start.sh && myblockserver 的形式 就是执行多个命令命令,最后的一个命令是阻塞的 镜像1: 1号进程是 /bin/sh -c pre-start…...
JS---获取浏览器可视窗口的尺寸
innerHeight 和 innerWidth 这两个方法分别是用来获取浏览器窗口的宽度和高度(包含滚动条的) <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible&q…...
对抗攻击方法详解:梯度攻击、转移攻击与模型集成攻击
对抗攻击方法详解:梯度攻击、转移攻击与模型集成攻击 近年来,随着深度学习模型在各个领域取得惊人突破,对抗攻击(Adversarial Attack) 逐渐成为研究热点。对抗攻击旨在通过在输入数据上施加精心设计的微小扰动&#x…...
GPU并行效率问题——通过MPS提升GPU计算收益
GPU并行效率问题——通过MPS提升GPU计算收益_gpu mps-CSDN博客...
patch 命令:补丁的应用
一、命令简介 diff 和 patch 是传统的文件比较和应用差异的工具,而 git 是一个更现代、功能更全面的版本控制系统,它内置了 diff 和 patch 的功能,并且提供了更多用于代码管理和协作的高级特性。 diff, patch 和 git 之间的关系…...
仓颉编程语言4,遇到BUG求助
本来准备整仓颉链接Mysql数据库。参考:GitCode - 全球开发者的开源社区,开源代码托管平台 这种方式是拿mysql官方的dll,编译一下,然后再封装成仓颉数据库驱动。这种方式不够逼格,所以准备解析mysql网络协议,从0开始写…...
SpringIOCDI
1.IOC 1.1.IOC概述 IOC: Inversion Of Control,简称IOC,也被称为控制反转。对象的创建权由程序员主动创建转移到容器,由容器创建、管理对象,这种思想称为控制反转。这个容器称为IOC容器或Spring容器被IOC容器创建、管…...
单细胞Seruat和h5ad数据格式互换(R与python)方法学习和整理
SeruatV4数据转化为h5ad格式数据 1、导入(R) rm(list ls()) library(Seurat) library(qs) library(reticulate) library(hdf5r) library(sceasy) library(BiocParallel) register(MulticoreParam(workers 4, progressbar TRUE)) scRNA <- qread("sc_dataset.qs&q…...
分布式难题-三座大山NPC
文章目录 1. 三座大山 NPC 的概念2. NPC 细分理解2.1. Network Delay 网络延迟2.2. Process Pause 进程暂停2.3. Clock Drift 时钟漂移Is the Algorithm Asynchronous? 本文参考: RedLock红锁安全性争论(上) https://martin.kleppmann.com/…...
两个方法教你设置Excel密码,防止修改和复制Excel表格内容
EXCEL是一款功能强大的电子表格软件,广泛用于各个地方。然而,对于一些重要的表格文件需要通过设置密码来限制大就的修改和复制权限。因而,对于一个EXCEL表格,通过密码设置大家有访问表格的权限,但无法修改数据的权限。…...
数据治理进阶——解读埃森哲大型央企数字化转型数据治理企业架构建设案例【附全文阅读】
该方案聚焦大型央国企数字化转型,适用于企业高层决策者、IT 部门负责人、业务部门管理者以及对数字化转型感兴趣的专业人士。方案主要内容围绕数字化转型展开,涵盖数据治理、企业架构建设等关键领域。在数字化转型部分,明确其目的是释放禁锢价…...
QT6在Ubuntu20.4上的避坑指南:为什么你的安装总是失败?
QT6在Ubuntu 20.04上的避坑指南:从依赖缺失到环境配置的深度解析 Ubuntu 20.04作为长期支持版本,至今仍是许多开发者的首选系统。然而当你想在这个稳定版本上安装QT6时,可能会遇到各种意想不到的问题——从依赖库冲突到权限错误,从…...
掺氢燃气轮机Simulink动态仿真模型探索
掺氢燃气轮机simulink动态仿真模型 1. 西门子5MW和260MW(v94.3a)模型设计点 2. 可选择加pid控制或开环动态仿真模型 3. 功率可以为输入也可以为输出,供选择 4. 掺氢气比例可以动态调节 5. 输出参数包括燃烧室出口温度,流量,动力涡轮出口温度&…...
告别模糊深度图:用CREStereo的级联循环网络,搞定手机双摄的立体匹配难题
手机双摄立体匹配的工程突围:CREStereo如何重塑深度图细节 当你在智能手机上使用人像模式时,是否注意到头发丝边缘总会出现不自然的虚化断裂?这种"深度图模糊综合征"正是移动端立体匹配面临的典型挑战。不同于工业级双目摄像头&…...
电感器特性与工程应用全解析
电感器的工程应用与特性分析1. 电感器基础特性电感器(Inductor)是电子电路中的基本无源元件,由导线绕制而成,可分为空心线圈和带磁芯线圈两种基本结构。其基本单位是亨利(H),常用单位还包括毫亨(mH)和微亨(μH),换算关系为&#x…...
【实战指南】Green Hills MULTI-IDE 从零安装到嵌入式开发环境搭建
1. Green Hills MULTI-IDE 初探:为什么选择它? 如果你正在寻找一款强大的嵌入式开发工具,Green Hills MULTI-IDE 绝对值得考虑。作为一个在嵌入式领域摸爬滚打多年的老手,我用过Keil、IAR等各种IDE,但MULTI-IDE给我的体…...
万物识别-中文镜像步骤详解:从镜像pull到浏览器验证的12个关键节点
万物识别-中文镜像步骤详解:从镜像pull到浏览器验证的12个关键节点 你是不是也遇到过这样的场景:看到一张图片,想知道里面是什么东西,但手动搜索又麻烦又慢?或者,你的项目需要批量识别图片内容,…...
化妆镜前扮精致,脊柱 “被扯得变形错位”!
低头化妆、整理发型、涂抹护肤品、搭配饰品,颈腰椎损伤风险显著。低头时颈椎前伸角度过大,肌肉持续紧张痉挛;久坐化妆时腰部缺乏支撑,腰椎同步受累;反复低头抬头动作,导致颈肩腰背肌肉协同疲劳。长期如此&a…...
ESXi 8.0U3i在部署过程中出现技嘉(GIGABYTE)Z390 I AORUS PRO WIFI主板+万兆intel x520-da2 sr2 82599ES万兆网卡不识别处理方法
你遇到的问题核心是:ESXi 8.0U3i 原生 / 通用集成镜像缺少对技嘉 Z390 I AORUS PRO WIFI 板载网卡、Intel X520-DA2(82599ES)万兆网卡及部分 NVMe/USB 控制器的完整驱动支持。解决思路是:先排查 BIOS → 再用定制镜像(下载现成或自己封装)→ 最后验证驱动…...
重构ComfyUI工作流:从混乱到高效的节点优化实践
重构ComfyUI工作流:从混乱到高效的节点优化实践 【免费下载链接】ComfyUI-KJNodes Various custom nodes for ComfyUI 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-KJNodes 一、问题发现:识别工作流中的效率瓶颈 1.1 视觉复杂性诊断 …...
