摘要: 使用最广同时也是面试问的最多的一个设计模式 代码: /** 单例:即程序只能拥有一个实例,比如数据库连接池、日志系统等,这个类提供了a56爆大奖在线娱乐访问其唯一的对象的方式。 * 单例分饿汉式和懒汉式,饿汉式无线程安全问题,懒汉式在多线程场景下存在线程安全问题,需要加锁实现线程同步。 */ #include <m 阅读全文
posted @ 2022-08-10 10:36 Ray-ss 阅读(70) 评论(0) 推荐(0) 编辑
摘要: 1. 回调函数与普通函数的区别 回调函数即函数指针来实现,可实现多态效果;信号处理函数一般也设置成回调,当事件发生,通过回调函数通知。 2. 函数返回局部变量时的一些优化:编译器的NRV优化,C++11的move 实际上归根结底是减少拷贝,构造和析构的次数,提高实现效率,只是实现方面的不同罢了。 3 阅读全文
posted @ 2022-08-10 10:31 Ray-ss 阅读(20) 评论(0) 推荐(0) 编辑
摘要: 1. 从快排partition过程借鉴而来,利用partion过程每次能确定一个元素位置来实现。 此算法期望时间复杂度为O(N),最差为O(N^2)。 每次确定了一个元素位置后,就能判断待查的topk个元素是在哪个分区,只需要递归一个分区即可。 代码如下: int quickSelect(vecto 阅读全文
posted @ 2022-08-10 10:09 Ray-ss 阅读(253) 评论(0) 推荐(0) 编辑
摘要: ## 快速排序(代码) 写这篇文章之前至少做了不下十遍快排,但现在仍然不能保证一写就A,故记录一下。 partition过程的边界条件不是很好弄,因此面试经常出现。 partition单向划分:三个区域 <= > ? int partition1(vector<int>& nums, int l, 阅读全文
posted @ 2022-08-10 09:35 Ray-ss 阅读(18) 评论(0) 推荐(0) 编辑