- 一:C/C++基础
- struct与class的区别 :
-
相同点:都可以包含成员函数、都可以继承、都可以实现多态
不同点:struct是数据结构的实现体默认的访问权限是public,class是对象的实现体默认的访问权限是private
Struct不可以用作定义模板参数,class可以用作定义参数模板
- STL库的介绍 :
-
STL:标准模板库,体现了泛型化编程思想,泛型也是一种软件复用技术:需求、概念、模型、容器、算法、迭代子 .从根本上来说,STL是一些容器(list、map、set、map等)、算法和迭代器的集合
STL组件共分为6类:
- Container(容器)-------各种基本数据结构
- Adapyer(适配器)-------可改变Containers、Iterators、Function object接口的一种组件
- Algroithm(算法)-------各种基本算法如sort、search。。。等
- Iterator(迭代器)------连接containers和algorithms
- Function object(函数对象)
- Allocator(分配器)
- STL内存分配 :小型区块所可能造成的内存碎片问题,STL设置了双层级配置器
-
>128字节调用:一级配置器
<128字节调用:二级配置器
- 顺序容器
- vector:
- O(1)时间的快速访问
- 插入或删除到非尾结点位置所需时间时间复杂度O(n),在尾增加或删除元素所需要时间为O(1)
- 扩容规则:重新申请一个2倍大的内存空间;将原先空间内容拷贝过来,将原内容释放,将内存交给操作系统。
-
新建一个vector时,会给它分配一个连续的内存空间,如std::vector<int> vec,当通过push_back向其中加入元素时,如果初始分配空间已满,就会引起vector扩容。
- 注意事项:vector在插入、删除、扩容之后,都会引起迭代器的失效。
- 底层数据结构:数组,特点是连续存储、支持快速访问
- 建议:
面试C++软件开发需要具备什么知识(面试题)-----持续更新
最新推荐文章于 2024-08-11 17:12:46 发布
本文详细介绍了C++面试中常见的知识点,包括C++基础,如struct与class的区别,STL库的组成部分及其工作原理,特别是顺序容器如vector、deque、list的特性和使用注意事项。同时,深入讲解了数据结构,如红黑树的基础知识,以及C++中的算法和数据结构应用,如查找、排序、递归等。此外,还涉及到了计算机基础,如TCP/IP连接建立与数据库的相关概念。
摘要由CSDN通过智能技术生成