C++语言相关的常见面试题目(二)

news2024/12/27 13:58:30

1.vector底层实现原理

以下是 std::vector 的一般底层实现原理:

内存分配:当创建一个 std::vector 对象时,会分配一块初始大小的连续内存空间来存储元素。这个大小通常会随着 push_back() 操作而动态增加。

容量和大小:std::vector 有两个重要的成员变量:容量(capacity)和大小(size)。容量指向当前已分配内存空间的大小,而大小则表示当前 std::vector 中元素的数量。

元素访问:通过使用指针进行偏移来访问数组中的元素。因为 std::vector 是一个线性连续结构,在使用迭代器或下标访问时可以直接计算偏移地址。

动态扩展:当向 std::vector 添加新元素时,如果当前容量不足以容纳新元素,就需要重新分配更大的内存空间,并将原始数据拷贝到新地址上去。这可能导致数据复制开销较大。

push_back(const T& value):向 vector 尾部添加一个元素。

pop_back():删除 vector 尾部的一个元素。

size():返回当前 vector 中元素的个数。

capacity():返回当前 vector 的容量(即分配了多少内存空间)。

resize(size_type n, const T& val = T()):改变 vector 的大小,并且可以指定新添加元素的默认值。

clear():清空 vector 中所有元素,使其大小变为 0。

empty():判断 vector 是否为空,如果为空则返回 true,否则返回 false。

迭代器相关方法:

begin() 和 end(): 返回指向第一个和最后一个元素之后位置(尾部)的迭代器。
可以使用迭代器遍历并访问 vector 中的所有元素。
下标操作符重载[]: 通过下标访问特定位置上的元素。

2. vector的内存增长机制

省流:内存只增加不减少,gcc每次增长会翻倍,vs会增加0.5倍 

3. vector中reserve和resize的区别

省流:省不了一点

4. vector为什么不能存储引用?

引用是别名,不是对象,没有实际地址,不能定义引用的指针,也不能定义引用的引用

这是一条吃饭博客,由挨踢零声赞助。学C/C++就找挨踢零声,加入挨踢零声,面试不挨踢!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多卡(3090)部署通义千问Qwen2-72B大模型并加速至38tps:vLLM库的使用和错误排查

前一篇文章做了Qwen1的加速,其中关于Auto-GPTQ的安装问题在Qwen2中依然适用。但是Qwen2比Qwen1加载模型快了很多,笔者也不知道为什么。 下面是Hugging Face transformer版的千问2,token生成速度在15个每秒左右,但还不够快&#x…

Spring——IOC创建对象方式

可参考官网:https://docs.spring.io/spring-framework/reference/core/beans/dependencies/factory-collaborators.htmlhttps://docs.spring.io/spring-framework/reference/core/beans/dependencies/factory-collaborators.html 1. 使用无参构造创建对象&#xff0…

Unity--射线检测--RayCast

Unity–射线检测–RayCast 1.射线检测的含义 射线检测,根据名称而言,使用一条射线来检测是击中了某个物体/多个物体 射线检测的包含两个部分: 射线和检测 2.射线检测可以用在哪些地方 射击游戏: 玩家的瞄准和射击:检测玩家视线是否与敌人或其他目标…

初识c++(命名空间,缺省参数,函数重载)

一、命名空间 1、namespace的意义 在C/C中,变量、函数和后面要学到的类都是大量存在的,这些变量、函数和类的名称将都存在于全 局作用域中,可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化,以避免命名 冲突…

ubuntu24.04按关键字卸载不需要的apt包

使用的时候发现一个imagemagic无法正常读取文件,试图卸载 man apt经过尝试后,发现list的一个神奇关键字,用来显示已安装的软件包 sudo apt list --installed | grep image按image关键字过滤: 之后按软件名卸载即可 sudo apt pu…

数学建模论文写作文档word

目录 1. 摘要写法1.1 确定题目与方法1.2 编写开头段落1.3 填写问题一1.4 重复步骤3填写其他问题1.5 编写结尾段落1.6 编写关键词 2. 问题重述2.1 问题背景2.2 问题提出 3. 问题分析4. 问题X模型的建立与求解5. 模型的分析5.1 灵敏度分析5.2 误差分析(主要用于预测类…

DAY2:插件学习

文章目录 插件学习ClangGoogle TestCMakeDoxygen 收获 插件学习 Clang 是什么:Clang 是指 LLVM 项目的编译器的前端部分,支持对 C 家族语言(C、C、Objective-C)的编译。Clang 的功能包括:词法分析、语法分析、语义分析、生成中间中间代码 L…

浅析C++引用

浅析C引用"&" ​ C中引入了一个新的语言特性——引用(&),它表示某一对象的别名,对象与该对象的引用都是指向统一地址。那么我们就来看看关于引用的一些知识点吧🧐 特性 引用在定义时必须初始化一个变量可以有多个引用引…

C-10 凸包

凸包 数学定义 平面的一个子集S被称为是凸的,当且仅当对于任意两点A,B属于S,线段PS都完全属于S过于基础就不详细介绍了 凸包的计算 github上找到了别人的代码,用4种方式实现了凸包的计算,把他放在这里链接地址htt…

六、数据可视化—Wordcloud词云(爬虫及数据可视化)

六、数据可视化—Wordcloud词云(爬虫及数据可视化) 也是一个应用程序 http://amueller.github.io/word_cloud/ Wordcloud词云,在一些知乎,论坛等有这样一些东西,要么做封面,要么做讲解,进行分析…

Echarts 实现数据可视化

Echarts 简介 Echarts 是一个开源的、免费的、成熟的、商业级图表可视化框架,是 Apache 开源社区的顶级项目之一,也是国内使用最多和最为广泛的可视化图表框架之一。 数据可视化图表框架并没有一个统一的行业标准,比较常见的有 D3、Highchart…

电子设备常用的胶水有哪些?

目录 1、502胶水 2、703胶水 3、704胶水 4、AB胶 5、红胶 6、Underfill 7、导电胶 8、UV胶 9、热熔胶 10、环氧树脂胶 11、硅酮胶 12、聚氨酯胶 13、丙烯酸胶 14、丁基胶 1、502胶水 502胶水,也被称为瞬间胶或快干胶,是一种非常常见的粘合…

如何下载Github上项目中的一个目录或几个文件

目录 问题的由来 GitZip for Github插件 Edge中插件的安装 Chome中插件的安装 插件的使用 Github授权 文件下载 问题的由来 经常使用Github的可能都会有这样的需求,有的时候一个仓库好几个GB,但是感兴趣的只是某个目录下的文件。Git没有单独下载…

CTFShow的RE题(四)

真的是签到 给的是无后缀的 zip 文件,解压发现需要密码,也没有提示,猜测可能是 zip 伪加密 (走错厂了吧) zip是否加密 首先就是看开头的6 ,7byte,和中间 01 02 后的 5 ,6byte 成功解…

如何做一个透明度渐现且向上位移逐行出现的文字效果

前言 在这个夜黑风高的夜晚,你的眼睛已经开始有些疲惫。你的手指在键盘上轻轻地敲击着,仿佛在弹奏一首无声的夜曲。你的思绪在代码的海洋中飘荡,寻找着最后一行需要完成的代码。就在这时,你的老板走了过来,他的脸上带…

简过网:事业单位编制有哪几种类型,你都知道吗?

近几年来,随着考编、考公热,越来越多的朋友都有考编的想法,尤其是刚毕业的大学生,但是很多朋友对于事业单位编制有不清楚的地方,比如到底哪些属于事业单位的范围,事业单位编制分为哪些类型?今天…

解决:Android Studio 突然打不开!提示Failed to create JVM:error code -1

Android studio1.5 一直用得好好的,突然有一天打不开,并提示: 可是系统配置中,java的配置也是正常的。 解决方法: 修改安装目录下的studio64.exe.vmoptions 文件 直接将文件内容改成: -Xms128m -Xmx512m…

【活动行】参与上海两场线下活动,教育生态行业赛总决赛活动和WAIC人工智能大会活动 - 上海活动总结

目录 背景决赛最后一公里领域范围 决赛作品AI智教相机辅导老师Copilot辅导老师Copilot雅思写作竞技场 优秀作品总结 背景 决赛 百度发起的千帆杯教育生态行业赛于2024年7月4日进行线下决赛,博主虽然没能进入决赛,但也非常荣幸能够以嘉宾身份到现场给进…

213.贪心算法:跳跃游戏||(力扣)

class Solution { public:int jump(vector<int>& nums) {if (nums.size() 1) return 0; // 如果数组长度为1&#xff0c;已经在终点&#xff0c;不需要跳跃int cur 0; // 当前跳跃能到达的最远位置int flag 0; // 记录跳跃次数int next 0; // 下一次跳跃能到…

软件设计之Java入门视频(13)

软件设计之Java入门视频(13) 视频教程来自B站尚硅谷&#xff1a; 尚硅谷Java入门视频教程&#xff0c;宋红康java基础视频 相关文件资料&#xff08;百度网盘&#xff09; 提取密码&#xff1a;8op3 idea 下载可以关注 软件管家 公众号 学习内容&#xff1a; 该视频共分为1-7…