首页 > 其他分享 >对vector元素取地址的注意事项

对vector元素取地址的注意事项

时间:2023-01-07 17:08:32浏览次数:29  
标签:std 元素 back 地址 vector 注意事项 push


作者:朱金灿

  在对对vector元素取地址时需要考虑元素的地址是否发生了变化。比如下面代码:

std::vector<int> a;

a.push_back(0);
int* b = &a[0];
//在执行完下面代码,a[0]的地址已经发生了变化
for (int i = 0; i <100; ++i)
{
a.push_back(50);
}

  为什么在执行多次push_back操作后a[0]的地址会发生变化?究其原因std::vector在执行push_back操作就是先估算已申请的内存是否够用,如果不够用就会重新申请一块内存,再把原来的内存复制一份的,这时每个元素的地址都会发生变化的。std::vector扩容机制取决于编译器类型:VS2015-----1.5倍扩容;g++编译器-------2倍扩容。因此在对vector元素取地址时必须慎重,必须确保所取得的是元素的有效地址。


标签:std,元素,back,地址,vector,注意事项,push
From: https://blog.51cto.com/u_15456319/5995603

相关文章

  • 高级性能01-prometheus常⽤exporter下载地址⼤全
    1.node_exporter下载​​​https://github.com/prometheus/node_exporter/releases​​​2.blackbox_exporter下载​​https://github.com/prometheus/blackbox_exporter/r......
  • 卡诺图化简法注意事项
    今天反思一下卡诺图化简法中的注意事项。另,文章太短被限流了,因此补充一下竞争冒险相关的知识点。一、卡诺图化简法卡诺图方法在这里不介绍了,这种方法看起来简单,但如果不......
  • 中国软件供应链安全分享报告 附下载地址
    声明本文是学习​​2021年中国软件供应链安全分析报告.下载地址http://github5.com/view/1216​​而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们......
  • 克罗格 Kroger EDI需求分析及注意事项
    项目背景Kroger(美国克罗格公司)是具有百年历史的名店之一。它虽然历史悠久,但并没有被变化的世界所淘汰,相反,它围绕着市场消费需求的变化,不断地进行创新,创造了世界零售百年......
  • Java 获取本机IP地址
    文章目录​​前言​​​​一、规则​​​​二、获取​​​​1.使用​​​​2.工具类​​前言在Java中如何准确的获取到本机IP地址呢?网上大部分的做法是​​InetAddress.getL......
  • @RequestBody参数Map传参注意事项
    文章目录​​@requestBody参数Map传参注意事项​​​​后端接收`dto`​​@requestBody参数Map传参注意事项后端接收​​dto​​@DatapublicclassTestDto{privateString......
  • 汉字转拼音的注意事项
    在项目中需要实现汉字转拼音的业务需求,常见的类库包括微软的PinYinConverter和开源的NPinyin。如但在实际处理过程,还有很多问题需要注意:(1)分词(2)多音字(3)生僻字(4)地名......
  • 通过DHCP动态管理IP地址
    DHCP动态主机配置协议是一个局域网的网络协议,使用UDP协议工作,主要有两个用途:给内部网络或网络服务供应商自动分配IP地址、子网掩码、网关以及DNS等tcp/ip信息,给用户或者......
  • 正点原子FSMC控制TFT-LCD的地址偏移解读
    最近在学习stm32的FSMC,打算整一个LCD的驱动,然后封装的比正点原子更高层一些,方便后期直接调用然后在学习的时候碰到了一个小问题,研究了一会之后觉得挺有意思的,所以记下来......
  • 根据图片地址链接下载图片
    /***根据图片链接下载图片*/constdownloadImg=()=>{constcanvas=document.createElement('canvas');constimg=document.createElement(......