【C++】为什么vector的地址与首元素地址不同?

文章目录

  • 一、问题发现:
  • 二、结果分析
  • 三、问题解析

一、问题发现:

&vector和&vector[0]得到的两个地址居然不相同,对数组array取变量名地址和取首元素地址的结果是相同的。这是为啥呢?

使用下面代码进行验证:

#include<iostream>
#include<vector>
#include<array>
using namespace std;
 
int main()
{
	vector<int> a(5);
	cout << &a << endl;
	cout << &a[0] << endl;
	cout<<a.capacity()<<endl;
	array<int,5> arr;
	cout << &arr << endl;
	cout << &arr[0] << endl;
	cout << arr.size() << endl;
	return 0;
}

二、结果分析

在这里插入图片描述

可以发现vector的取数组名和首元素地址确实有很大差别。还记得我们在以前学习C语言数组时讲过&数组名取得就是这个数组元素的首地址,以为就是说取数组名等于取首元素地址。但是在这里为啥就不符合了呢?

三、问题解析

其实要搞懂这个问题,我们要先理清楚vector,array的底层逻辑。

  • 这里的array数组是C++中的一个固定大小的序列容器,并且存储在连续的内存位置,不能动态扩展或收缩。相当于C语言中的数组。
  • vector在C++中称为“向量”,是一个可动态扩容缩容的序列容器,并且也是存储在连续的内存位置。相当于一个可变数组。扩容时使用的动态开辟内存在堆上开空间。

当你创建一个 vector 对象时,会在栈区上分配一个存储 vector 元数据的对象(例如,指向堆区数组的指针和数组的大小)。而实际的元素数组则在堆区动态分配内存。如下图:
在这里插入图片描述
看到这里相必就十分清楚了。

至于array在上面例子中,可以看出它的地址和栈最近,所以是存储在栈区。其实,不同的问题要不同分析。比如如果使用动态开辟函数就是涉及到堆区,看到指针就知道指针存在栈区,static静态就存在全局区(静态区),字符串常量就存储在代码段。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/474179.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

harbor迁移

采用从原仓库拉取镜像的方式 根据情况填&#xff0c;空的话&#xff0c;默认就是从原harbor的abc仓库拉到现harbor的abc仓库

termux安装

termux安装Python和postgres 安装python 安装pg数据库

LabVIEW高效光伏数据监控与管理系统

LabVIEW高效光伏数据监控与管理系统 随着新能源技术的发展&#xff0c;光伏发电系统作为一种清洁、高效的能源获取方式受到了广泛的关注。但是&#xff0c;由于光伏发电的特性受到多种环境因素的影响&#xff0c;其运行效率和安全性成为了关键问题。因此&#xff0c;开发一个高…

电脑硬盘误删怎么恢复,误删硬盘的文件能不能再恢复

误删硬盘的文件能不能再恢复&#xff1f;很多朋友都很关心这个问题&#xff0c;不用担心&#xff0c;误删硬盘文件是可以恢复的&#xff01;使用电脑不可避免会遇到一些糊涂的时刻&#xff0c;比如误删了重要的文件。当我们发现自己不小心将硬盘上的文件删除时&#xff0c;心里…

ElasticSearch - 基本操作

前言 本文记录 ES 的一些基本操作&#xff0c;就是对官方文档的一些整理&#xff0c;按自己的习惯重新排版&#xff0c;凑合着看。官方的更详细&#xff0c;建议看官方的。 下文以 books 为索引名举例。 新增 添加单个文档 (没有索引会自动创建) POST books/_doc {"n…

Python爬虫入门:HTTP与URL基础解析及简单示例实践

在数字化时代&#xff0c;数据已成为一种宝贵的资源。Python作为一种强大的编程语言&#xff0c;在数据采集和处理方面表现出色。爬虫技术&#xff0c;即网络爬虫&#xff0c;是Python中用于数据采集的重要工具。本文作为Python爬虫基础教程的第一篇&#xff0c;将深入讲解URL和…

酷开系统满足你的需求,加入酷开会员开启娱乐之旅

酷开科技深知家庭娱乐在我们生活中的重要性&#xff0c;因此&#xff0c;酷开科技不断努力为我们带来更好的内容和服务&#xff0c;在这里&#xff0c;我们能够享受到家庭娱乐的乐趣和便利&#xff0c;感受到酷开科技带来的温暖。电影迷、游戏迷还是音乐爱好者&#xff0c;酷开…

多项式朴素贝叶斯分类器

在这篇文章中&#xff0c;我们介绍多项式朴素贝叶斯分类器是如何工作的&#xff0c;然后使用scikit-learn作为实际工作的示例来介绍如何使用。 与假设高斯分布的高斯朴素贝叶斯分类器相反&#xff0c;多项式朴素贝叶斯分类器依赖于多项分布。通过学习/估计每个类的多项概率来“…

2024 年 6 款最佳 SD 卡恢复软件

“有没有最好的 SD 卡恢复软件可以推荐给我来恢复 SD 卡上丢失的数据&#xff1f;程序太多了。我很难选择合适的存储卡数据恢复软件。” 有一天&#xff0c;我的朋友让我向他推荐最好的SD卡数据恢复软件&#xff0c;因为他在网上搜索&#xff0c;发现有很多选择&#xff0c;而…

JS13-事件的绑定和事件对象Event

绑定事件的两种方式/DOM事件的级别 DOM0的写法&#xff1a;onclick element.onclick function () {}举例&#xff1a; <body> <button>点我</button> <script>var btn document.getElementsByTagName("button")[0];//这种事件绑定的方式…

关于汽车中网改装需要报备吗?(第二天)

车联网改造需要申报吗&#xff1f; 今天2022年10月20日&#xff0c;小编就给大家介绍一下车联网改装是否需要申报的相关知识。 让我们来看看。 汽车格栅改装无需申报。 这种年检可以直接通过。 您不必担心&#xff0c;因为汽车格栅对于实车的外观来说并不陌生&#xff0c;因此…

Docker常用命令!!!

一、docker基础命令 1、启动docker systemctl start docker 2、关闭docker systemctl stop docker 3、重启docker systemctl restart docker 4、docker设置随服务启动而自启动 systemctl enable docker 5、查看docker 运行状态 systemctl status docker 6、查看docker 版本号信…

eth 套利案例五

交易hash : 0xb69981d437af7b9b705b3eb459df89d69901b5aff1cf2f99673372c873d50daf 时间&#xff1a; 2024.02.24 获利&#xff1a; 9699刀 交易流程&#xff1a; 292376226817040592 2940802860 先贷出230个weth, 然后再换成eth 再换成 2940802860 个kekec, 然后再用 29237…

# Django通过开关控制数据库参数(JS版)

目录 场景初始的视图层HTML部分JS代码视图层接受部分 场景 此时我的表单中有一排开关 数据库有一排状态 需求是要当开关开启时数据库state为1&#xff0c;关闭时为0 初始的视图层 将整个adv数据表返回给前端HTML def adv(request):adv_list Adv.objects.all()return rende…

C++项目 -- 负载均衡OJ(一)compile_server

C项目 – 负载均衡OJ&#xff08;二&#xff09;compile_server 文章目录 C项目 -- 负载均衡OJ&#xff08;二&#xff09;compile_server一、compile_server设计1.总体服务流程 二、compiler.hpp三、runner.hpp四、compile_run.hpp五、compile_server.cc5.1.编译功能调试&…

【记录搭建elk 如何在linux共享文件】

『如何在linux共享文件 &#xff0c;搭建elk直接看第二部分』 新增用户a b c adduser a adduser b adduser c新增用户组 A groupadd developteam将用户a b c 加入 组 usermod -a -G developteam hadoop usermod -a -G developteam hbase usermod -a -G developteam hive设置um…

拷贝他人maven仓库jar包到自己本地仓库,加载maven依然提示无法下载对应依赖

所遇问题&#xff1a; 拷贝他人maven仓库jar包到自己本地maven仓库repository下的对应依赖位置&#xff0c;重新加载idea的maven依然提示无法下载对应依赖。 解决办法&#xff1a; 在maven->repository找到对应报错依赖路径&#xff0c;删除xxx.repositories 和 xxx.lastU…

蓝桥杯算法心得——附近最小(优先队列+滑动窗口)

大家好&#xff0c;我是晴天学长&#xff0c;这题可以用贪心优先队列和滑动窗口来写&#xff0c;需要的小伙伴可以关注支持一下哦&#xff01;后续会继续更新的。&#x1f4aa;&#x1f4aa;&#x1f4aa; 1) .附近最小 问题描述 小蓝有—个序列a[1], a[2],...,a[n]。 给定—个…

【MySQL】7. 基本查询(create / retrieve)

表的增查 CRUD : Create(创建), Retrieve(读取)&#xff0c;Update(更新)&#xff0c;Delete&#xff08;删除&#xff09; 1. Create 语法&#xff1a; INSERT [INTO] table_name[(column [, column] ...)] VALUES (value_list) [, (value_list)] ...value_list: value, […

【办公类-16-07-07】“2023下学期 大班户外游戏2(有场地和无场地版,每天不同场地)”(python 排班表系列)

作品展示 背景需求&#xff1a; 2024年2月教务组发放的是“每周五天内容相同&#xff0c;两周10天内容相同”的户外游戏安排 【办公类-16-07-05】合并版“2023下学期 大班户外游戏&#xff08;有场地和无场地版&#xff0c;两周一次&#xff09;”&#xff08;python 排班表系…
最新文章