当前位置: 首页 > article >正文

C++面试100问(十)

C++中unordered_map和map的区别是什么?

        map是STL中的一个关联容器,提供键值对的数据管理。底层通过红黑树来实现,实际上是二叉排序树和非严格意义上的二叉平衡树。所以在map内部所有的数据都是有序的,且map的查询、插入、删除操作的时间复杂度都是O(logN)。unordered_map和map类似,都是存储key-value对,可以通过key快速索引到value,不同的是unordered_map不会根据key进行排序。unordered_map底层是一个防冗余的哈希表,存储时根据key的hash值判断元素是否相同,即unoredered_map内部是无序的。

C++中vector是如何扩容?

        vector的动态增加大小的时候,并不是在原有的空间上持续新的空间(无法保证原空间的后面还有可供配置的空间),而是以原大小的两倍另外配置一块较大的空间,然后将原内容拷贝过来,并释放原空间。在VS下是1.5倍扩容,在GCC下是2倍扩容。

C++中vector容器是什么?

        vector就是一个动态增长的数组,里面有一个指针指向一片连续的空间,当空间装不下的时候,会申请一片更大的空间,将原来的数据拷贝过去,并释放原来的旧空间。当删除的时候空间并不会被释放,只是清空了里面的数据。对比array是静态空间一旦配置了就不能改变大小。

C++中文件编译与执行需要经历哪四个阶段?

        1)预处理:根据文件中的预处理指令来修改源文件的内容 2)编译:编译成汇编代码 3)汇编:把汇编代码翻译成目标机器指令 4)链接:链接目标代码生成可执行程序。

C++中定义和声明的区别是什么?

        声明是告诉编译器变量的类型和名字,不会为变量分配空间,定义需要分配空间,同一个变量可以被声明多次,但是只能被定义一次。

C++中如何防止内存泄漏和指针越界?

        malloc/free要配套,对指针赋值的时候应该注意被赋值的指针是否需要释放;使用的时候记得指针的长度,防止越界。

C++中什么是内存泄漏?

        动态分配内存所开辟的空间,在使用完毕后未手动释放,导致一直占据该内存,即为内存泄漏。

C++中#include<file.h> #include "file.h" 的区别是什么?

        前者是从标准库路径寻找,后者是从当前工作路径。


http://www.kler.cn/a/272393.html

相关文章:

  • 【24】Word:小郑-准考证❗
  • 简述mysql 主从复制原理及其工作过程,配置一主两从并验证。
  • LeetCode:2266. 统计打字方案数(DP Java)
  • C#,入门教程(02)—— Visual Studio 2022开发环境搭建图文教程
  • 【系统分享01】Python+Vue电影推荐系统
  • Redisson发布订阅学习
  • 【K8s】肿么办??Kubernetes Secrets并不是Secret哟!!
  • 数据结构概述
  • Spring6--IOC反转控制 / 基于XML管理bean
  • 数据结构之双向链表
  • Sklearn K-均值算法
  • python提取身份证中的生日和性别
  • 远程办公、企业内网服务器的Code-Server上如何配置使用CodeGeeX插件
  • 图解Kafka架构学习笔记(一)
  • C语言经典面试题目(十八)
  • unityprotobuf自动生成C#
  • fastapi 的css js文件地址修改
  • 第 126 场 LeetCode 双周赛题解
  • 设计原则、工厂、单例模式
  • 程序人生——Java异常使用建议
  • el-select使用filterable下拉无法关闭得问题
  • react03
  • Java推荐算法——特征加权推荐算法(以申请学校为例)
  • 合并两个有序链表
  • RabbitMQ命令行监控命令详解
  • Redis7学习记录(1)