曾格的github

随笔分类 -  C++

学好C++,走遍天下都不怕
摘要:1 #include<iostream> 2 #include<vector> 3 using namespace std; 4 5 class A { 6 public: 7 int a = 1; 8 public: 9 int getRes() { 10 cout << this<<endl; 阅读全文
posted @ 2021-11-10 22:23 曾格 阅读(977) 评论(0) 推荐(0) 编辑
摘要:虾皮一面问了redis、MySQL、Http,前面答得都很好,面试官评价也挺好的,然后面试官说做完这个算法题,如果能做出来,面试就过了。 面试题:滑动窗口最大值JZ59 我的思路: 通过双指针实现窗口(大小为k)在数组(大小为n)上的滑动,并用一个索引记录当前窗口最大值的位置,如果最大值被划出窗口了 阅读全文
posted @ 2021-10-26 15:23 曾格 阅读(33) 评论(0) 推荐(0) 编辑
摘要:描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P mod 1000000007 思路:归并排序,元素移动的单位和就是逆序对的个数 1 class Solution 阅读全文
posted @ 2021-10-11 16:09 曾格 阅读(43) 评论(0) 推荐(0) 编辑
摘要:链接:https://www.nowcoder.com/questionTerminal/f92929ec6e5642a690e7c197b0c40e38?answerType=1&f=discussion 给定一个整形数组arr,已知其中所有的值都是非负的,将这个数组看作一个容器,请返回容器能装多 阅读全文
posted @ 2021-10-10 23:47 曾格 阅读(46) 评论(0) 推荐(0) 编辑
摘要:描述 果园里有一堆苹果,一共n头(n大于1小于9)熊来分,第一头为小东,它把苹果均分n份后,多出了一个,它扔掉了这一个,拿走了自己的一份苹果,接着第二头熊重复这一过程,即先均分n份,扔掉一个然后拿走一份,以此类推直到最后一头熊都是这样(最后一头熊扔掉后可以拿走0个,也算是n份均分)。问最初这堆苹果最 阅读全文
posted @ 2021-10-10 11:38 曾格 阅读(44) 评论(0) 推荐(0) 编辑
摘要:描述 体育场突然着火了,现场需要紧急疏散,但是过道真的是太窄了,同时只能容许一个人通过。现在知道了体育场的所有座位分布,座位分布图是一棵树,已知每个座位上都坐了一个人,安全出口在树的根部,也就是1号结点的位置上。其他节点上的人每秒都能向树根部前进一个结点,但是除了安全出口以外,没有任何一个结点可以同 阅读全文
posted @ 2021-10-09 20:42 曾格 阅读(40) 评论(0) 推荐(0) 编辑
摘要:注意点: i是从start开始的; ++i和--j都放else里面; 记得先递归出口; 1 #include<iostream> 2 #include<vector> 3 using namespace std; 4 5 // 快排 6 void sort(vector<int>& res, int 阅读全文
posted @ 2021-09-25 22:27 曾格 阅读(28) 评论(0) 推荐(0) 编辑
摘要:有N个小朋友站在一排,每个小朋友都有一个评分 你现在要按以下的规则给孩子们分糖果: 每个小朋友至少要分得一颗糖果 分数高的小朋友要他比旁边得分低的小朋友分得的糖果多 你最少要分发多少颗糖果? 示例1 输入 [1,2,2] 输出 4 思路: 从左到右一次遍历,从右到左一次遍历,就ok了。 我的错误的思 阅读全文
posted @ 2021-09-22 15:46 曾格 阅读(91) 评论(0) 推荐(0) 编辑
摘要:虚假唤醒: 当 wait() 不带有第二个判断条件参数时会发生虚假唤醒的情况,所以wait()中尽量要带有第二个参数,并且这个lambda表达式要正确判断处理的公共数据是否存在。条件变量很重要,以后会经常用到。 atomic: std::atomic<int> atm = 0; cout << at 阅读全文
posted @ 2021-09-17 21:27 曾格 阅读(43) 评论(0) 推荐(0) 编辑
摘要:windows临界区 属于C++语法,可以跨平台。 Windows临界区,同一个线程是可以重复进入的,但是进入的次数与离开的次数必须相等。 C++互斥量则不允许同一个线程重复加锁。 RAII类:(Resource Acquisition is initialization)资源获取及初始化:构造函数 阅读全文
posted @ 2021-09-17 20:18 曾格 阅读(81) 评论(0) 推荐(0) 编辑
摘要:std::async深入理解,async 用来创建一个异步任务: std::async()我们一般不叫创建线程(他能够创建线程),我们一般叫它创建一个异步任务。 std::async和std::thread最明显的不同,就是 async 有时候并不创建新线程。 如果用std::launch::def 阅读全文
posted @ 2021-09-17 19:18 曾格 阅读(2200) 评论(0) 推荐(1) 编辑
摘要:std::atomic原子操作: 互斥量:多线程编程中 用于保护共享数据:先锁住, 操作共享数据, 解锁。 有两个线程,对一个变量进行操作,一个线程读这个变量的值,一个线程往这个变量中写值。 即使是一个简单变量的读取和写入操作,如果不加锁,也有可能会导致读写值混乱。 一条C++语句 i++ 会被拆成 阅读全文
posted @ 2021-09-17 18:58 曾格 阅读(215) 评论(0) 推荐(0) 编辑
摘要:std::async、std::future创建后台任务并返回值 std::async是一个函数模板,用来启动一个异步任务,启动起来一个异步任务之后,它返回一个std::future对象,这个对象是个类模板。 异步任务:就是自动创建一个线程,并开始 执行对应的线程入口函数,它返回一个std::fut 阅读全文
posted @ 2021-09-17 17:59 曾格 阅读(719) 评论(0) 推荐(0) 编辑
摘要:条件变量condition_variable 类成员函数有:wait、notify_one、notify_all 条件变量的优点:比如我们要达到一个条件,就加锁执行后续代码,但如果要一直检测,就需要一直加锁,那就会浪费锁资源,即使用双重锁,还是要不断地做判断。而用了条件变量,只需要一次判断,如果不满 阅读全文
posted @ 2021-09-17 17:12 曾格 阅读(242) 评论(0) 推荐(0) 编辑
摘要:输入一个字符串,转换为特定的格式,如:2019, 12, 31, 23, 59, 59, 1表示在2019-12-31 23:59:59的1s后时间,即:2020-01-01 00:00:00 咋一看很简单,但还是发现自己的代码基础还需要很大提升,我至少写了2个半小时,最大的收获感觉就是不管遇到简单 阅读全文
posted @ 2021-09-17 00:19 曾格 阅读(28) 评论(0) 推荐(0) 编辑
摘要:设计模式:代码的一些写法:程序灵活,维护起来可能方便,但是别人接管比较麻烦。 设计模式肯定有它独特的有点,要活学活用,不要深陷其中,不要为了用设计模式而用设计模式。 单例设计模式 单例类:整个项目只能创建一个对象。 单线程单例步骤:构造函数初始化 =》静态私有成员变量 =》公有静态函数,返回类对象指 阅读全文
posted @ 2021-09-16 00:18 曾格 阅读(42) 评论(0) 推荐(0) 编辑
摘要:unique是个类模板,工作中,一般lock_guard(推荐使用); lock_guard取代了mutex的 lock() 和 unlock();unique_lock又取代lock_guard;qaq unique和guard都是RAII风格的机制来的机制在作用域块的持续时间内拥有一个互斥量 创 阅读全文
posted @ 2021-09-15 23:43 曾格 阅读(233) 评论(0) 推荐(0) 编辑
摘要:互斥量: 是个类对象,理解成一把锁,多个线程尝试用lock()来加锁这把锁头时,只有一个线程能锁定成功。(成功的标志是lock()函数返回),如果没锁成功,那么流程卡在lock()这里不断尝试去锁这把锁头(也就是每被调用寄存器一次,都会去申请锁)。 慎用lock()保护共享数据不多也不少,少了达不到 阅读全文
posted @ 2021-09-15 23:16 曾格 阅读(26) 评论(0) 推荐(0) 编辑
摘要:void myprint2(const int &mybuf) { cout << "子线程开始,threadid=" << mybuf << endl; cout << "子线程结束,threadid=" << mybuf << endl; } int main() { vector<thread 阅读全文
posted @ 2021-09-15 23:02 曾格 阅读(74) 评论(0) 推荐(0) 编辑
摘要:线程参数 引用和指针: 陷进一:不要用引用和指针,因为地址可以被主线程运行完后释放了。 陷阱二:将对象传递给子线程时,可能主线程都运行完了,对象还没构建。 通过源码可知,thread类禁用了拷贝构造函数,但支持对象move 带参架构函数接受的值是右值引用。非带参和move的线程都是非joinable 阅读全文
posted @ 2021-09-15 22:46 曾格 阅读(127) 评论(0) 推荐(0) 编辑

Live2D
欢迎阅读『C++』
点击右上角即可分享
微信分享提示