摘要: 链表,没什么特别的,很基本 assign(20,(A)t); 有重载,可以将一个vector或者map转为list 如assign(v.begin(),v.end()); earse()会返回下一个节点的迭代器 unique操作会去重,vector也有此方法 有个合并操作,merge() 感觉链表使 阅读全文
posted @ 2018-12-12 23:37 戳戳熊 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 感觉自己对STL的很多东西还是不够明确,趁这个机会把这些内容整理一下,顺便明确化一些模糊的点. STL六大组件 容器,算法,迭代器,仿函数,适配器,分配器. 基本也是按照常用顺序排列 容器,现在理解起来就是数据的组织方式. 数组,原生数组 vector用于替代原数组,一定程度上解决了数组开大了浪费, 阅读全文
posted @ 2018-12-12 23:13 戳戳熊 阅读(234) 评论(0) 推荐(0) 编辑
摘要: 先上代码,声明部分 windows的sleep和Linux的sleep不一样,所以只好#ifdef ,大概是Linux: usleep(微妙) sleep(秒) windows:Sleep(毫秒),只有这部分必须要涉及平台特性 构造和析构: 构造函数的一个要点:必须要先把一些东西都创建好了,再启动线 阅读全文
posted @ 2018-12-04 11:39 戳戳熊 阅读(324) 评论(0) 推荐(0) 编辑
摘要: 上面部分是工作者线程,循环取任务,try执行,条件变量阻塞,push任务的时候会唤醒一个,而且本身就会有执行完发现有任务,继续执行不等待的,所以不会有明明有任务,却线程都在等待的情况 值得一说的一点是,由于map不管是用哈希表,还是红黑树,对单独一个节点的内容值操作都不影响其他节点,故这里用读写锁去 阅读全文
posted @ 2018-12-04 11:28 戳戳熊 阅读(391) 评论(0) 推荐(0) 编辑
摘要: 第二部分是关于线程池主要两个操作: 1.提交一个任务 2.获取已提交任务的结果 提交任务函数 传入一个函数指针,一个参数void* ,以及是否需要查询返回值,如果不需要返回值效率会高些,如果选择要查询结果,但是任务完成后没有获取结果的话,会一直占用空间 如果是不需要返回值返回1,否则返回key,失败 阅读全文
posted @ 2018-12-04 11:00 戳戳熊 阅读(735) 评论(0) 推荐(0) 编辑
摘要: 线程池的思想早有耳闻,中间也涉及好多内容,回过头来重新设计一下线程池. 使用者视角: 1.创建一个线程池对象, ThreadPool ThPool(int minThreads); //同时会创建一个管理者线程,负责维护线程池,可以通过算法动态调度增加或减少线程 2.加入一个任务 int ThPoo 阅读全文
posted @ 2018-12-04 10:41 戳戳熊 阅读(976) 评论(0) 推荐(0) 编辑
摘要: 先上代码,我不会把每道题都上传解析,但是如果我觉得有不错的收益,或者认为写的够好,可能会考虑发上来记下,主要也是一个学习记忆的过程. 题目意思: 求一个人根据6层关系能够认识的人占所有人的比例,一个有关图的求解问题.基本解题思路不难,主要是我这里创新了一把.STL中的bitset,位图集合,图的模型 阅读全文
posted @ 2018-11-22 14:49 戳戳熊 阅读(283) 评论(0) 推荐(0) 编辑
摘要: 所有代码环境没有说明都是VMware中运行的Ubuntu18里。 :写这么多东西,我觉得是对知识的梳理吧,一个是防忘,再者,是构建一个完整体系。 :废话比较多,我写的时候就像是在给一个只有一点编程基础的人对话,似乎要给他讲明白一样 :解释将大量以注释的形式表述 下面就是一个简单的,多线程回写服务器 阅读全文
posted @ 2018-11-07 20:43 戳戳熊 阅读(212) 评论(0) 推荐(0) 编辑
摘要: (第一篇)记PAT习题,AVL树的原理的见解 题目意思就是给出一个N,接着插入N个值,以AVL树的方式插入,然后求AVL树的根节点 首先是树的节点结构体,网上有人实现是节点本身储存了一个额外信息就是树高,而不存储平衡因子这个信息。而我的实现是储存平衡因子不储存树高。 AVL树的平衡调整方式有4种,分 阅读全文
posted @ 2018-11-01 21:34 戳戳熊 阅读(932) 评论(0) 推荐(1) 编辑