- 博客(9)
- 收藏
- 关注
原创 C++面试八股-STL(queue)
queue(队列)在stl里面不是一个基础的容器(container),而是一个适配器(adapter),一般是封装了其他的基础容器作为存储基础。在stl里面,stl::queue是基于stl:deque双端队列来实现的,不过根据queue先进先出以及首尾快速存取的数据结构特点,也可以基于list进行实现,而不推荐vector之类的数组实现——因为在vector头部的插入或者删除速度过慢。根据STL之queue容器详解_std::queue-优快云博客。
2024-07-28 12:28:33
440
原创 C++面试八股-STL(List)
List是STL里面的双向链表,相比于vector内存连续,list容器内部的元素之间的物理地址不一定是排列在一起的,符合链表的使用场景及特点。
2024-07-24 23:01:48
172
原创 C++面试八股-STL(vector)
vector的容量是可以动态改变的,一般情况下使用vector的步骤是:声明一个vector并指定其元素的数据类型---初始化该vector的容量大小---往该vector增删改查元素---销毁或回收vector内存。vector的扩容操作步骤如下:达到扩容阈值---新开辟一块大小是原vector容量的若干倍的连续内存控件---将原vector的所有数据拷贝至新开辟的内存---让vector指向新的内存---回收原先vector开辟的内存---插入新的元素。个数,并非获取vector实际开辟的内存大小。
2024-06-30 17:54:04
1706
原创 C++面试八股-基础(三)
但是构造函数不能为虚函数,第一是因为C++编译器不支持这样操作,第二是构造函数没有动态多态的必要(但是有静态多态也就是重载的需要,例如默认构造函数、拷贝构造函数等),因为多态是为了解决编译期无法确定类型的问题,但是构造函数显然可以在编译期确定其类型。C++标准规定每个对象实例在内存中都必须有独一无二的地址,所以即使是空类,其实例化的对象也应有各自独特的内存地址,如果空类的大小为0,那么声明一个空类的对象数组时,数组中的所有元素都会具有相同的内存地址,这将违反C++的这一规定。
2024-06-23 21:34:15
1637
原创 C++面试八股-基础(二)
静态链接库后缀名为.lib/.a,是一种编译后的二进制文件,包含了程序运行所需的函数和数据,静态链接库中的代码和数据在程序编译时连接到目标代码中,故程序在运行时是不需要静态链接库的。1)异步操作:当需要执行一个耗时操作(如文件IO或网络等待)时,可以使用回调函数来执行该耗时操作返回后将要执行的操作,此时主线程就可以执行其他的工作,无需一直等待该耗时操作的返回。在这里,p是一个数组指针,指向一个包含3个int类型元素的数组的首地址,这个数组实际上是二维数组arr的第一行。3个*p分别代表了各自列的5个元素。
2024-06-23 09:46:14
531
原创 C++面试八股-基础(一)
虚继承的意义就是将基类的被继承变量并未在子类中拷贝一份,即B类和C类虽然继承了A类,但是B类和C类中并没有存储A类的对象(基类对象只有一份,被存放在了整个对象模型的最后),除了子类新增之外,只有一个指针,这个指针就被称为虚基表指针。对于单继承,派生类会将基类的虚函数拷贝一份并=放在虚函数表的最开头,然后如果有重写,则将虚函数表中被重写的基类的虚函数替换成派生类的虚函数,在基类的虚函数后面按照声明顺序将派生类的其他虚函数依次添加进虚函数表中。2)修饰成员变量/函数,表示该变量/函数不受对象影响,与对象无关。
2024-06-19 22:57:03
1287
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人