09 2019 档案

摘要:转自: https://blog.csdn.net/qq_22660775/article/details/89854545 返回引用与返回非引用的区别: 返回引用时,函数内部不会构造一个临时变量,而是直接将返回值返回出去。而当为非引用时,会构造一个临时变量(但不一定),然后返回这个匿名的临时变量。 阅读全文
posted @ 2019-09-20 18:14 李湘沅 阅读(2481) 评论(0) 推荐(0) 编辑
摘要:转自 https://www.cnblogs.com/jianhui-Ethan/p/4665573.html C++11 引入的新特性中,除了并发内存模型和相关设施,这些高帅富之外,最引人入胜且接地气的特性就要属『右值引用』了(rvalue reference)。加入右值引用的动机在于效率:减少不 阅读全文
posted @ 2019-09-18 10:09 李湘沅 阅读(945) 评论(0) 推荐(0) 编辑
摘要:基于生产者消费者模型的线程池设计: 数据结构: 成员: 1.一个队列m_queue.其中存放Task,也就是任务,生产者线程,也就是主线程,往这个队列中push;消费者,也就是工作线程,不停地从其中拿走Task去工作。 关于Task,原型为boost::function<void()> Task; 阅读全文
posted @ 2019-09-17 00:27 李湘沅 阅读(310) 评论(0) 推荐(0) 编辑
摘要:1.C++11 阅读全文
posted @ 2019-09-16 22:43 李湘沅 阅读(135) 评论(0) 推荐(0) 编辑
摘要:hashtable: hashtable的设计是一个vector数组,每个数组内为一个链表,链表链着hash到同位置的节点,但链表的实现不是list或slist hashtable的节点设计: 1.存储元素值的变量val 2.一个指向下一个节点(同一个bucket内的)的指针next hashtab 阅读全文
posted @ 2019-09-16 09:25 李湘沅 阅读(221) 评论(0) 推荐(0) 编辑
摘要:map与set底层都是调用的RBTree 首先看RBTree RBTree 红黑树的特性: 1.根节点为黑色 2.新增节点一定是红色 3.节点只有红色或黑色两种颜色 4.两个节点颜色不能同为红 5.任意一条路径上的黑色节点个数相同 红黑树的节点设计: 1.表示节点颜色的变量color 2.链接左子树 阅读全文
posted @ 2019-09-16 08:09 李湘沅 阅读(224) 评论(0) 推荐(0) 编辑
摘要:static的作用: 1.第一条也是最重要的一条:隐藏 当我们同时编译多个文件时,所有未加static前缀的全局变量和函数都具有全局可见性。如果加了static,就会对其它源文件隐藏。例如在a和msg的定义前加上static,main.c就看不到它们了。利用这一特性可以在不同的文件中定义同名函数和同 阅读全文
posted @ 2019-09-13 22:39 李湘沅 阅读(431) 评论(0) 推荐(0) 编辑
摘要:数组中重复的数字 题目描述 在一个长度为 n 的数组里的所有数字都在 0 到 n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字是重复的,也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 思路: 数组大小为n,数字范围为0~n-1,也就是说如果数组不重复,则排序后每个数组i上的元 阅读全文
posted @ 2019-09-13 11:24 李湘沅 阅读(245) 评论(0) 推荐(0) 编辑
摘要:纯虚析构函数 理论上来说,将一个函数声明为纯虚函数后,这个类即变为抽象类。纯虚函数只提供接口,而不提供实现,但纯虚析构函数一定要提供定义。这是由C++特性决定的,编译器对派生类的析构函数会进行扩展,以静态调用的方式调用其每一个虚基类和上基类的析构函数,尽管是一个抽象类,但仍然要为这个纯虚析构提供实现 阅读全文
posted @ 2019-09-12 23:12 李湘沅 阅读(230) 评论(0) 推荐(0) 编辑
摘要:完全背包问题 有N 种物品和一个容量为V 的背包,每种物品都有无限件可用。放入第i 种物品的费用是Ci,价值是Wi。求解:将哪些物品装入背包,可使这些物品的耗费的费用总和不超过背包容量,且价值总和最大。 现在的问题在于每个物品都有无限种,因此不能像01背包那样决定i物品放或者不放,因为放的话有多种可 阅读全文
posted @ 2019-09-12 12:38 李湘沅 阅读(723) 评论(6) 推荐(0) 编辑
摘要:deque deque是一种双向开头的现行连续空间 但它与vector有差异: 1.deque可以在O(1)的复杂度下进行头端插入与移除,而vector的头端操作效率极差 2.deque没有capacity概念。deque随时可以拼接一段新的连续空间。只有像vector这种可能出现空间不足的容器才需 阅读全文
posted @ 2019-09-12 00:45 李湘沅 阅读(366) 评论(0) 推荐(0) 编辑
摘要:list STL list实际上是一个双向链表 正因为如此,其迭代器是一个Bidirectional Iterators 迭代器的插入insert,接合splice以及删除erase都不会导致原有的迭代器(list中的其他迭代器)失效。 迭代器的数据结构: 内部一个成员node;node的类型为Li 阅读全文
posted @ 2019-09-11 23:28 李湘沅 阅读(193) 评论(0) 推荐(0) 编辑
摘要:198. 打家劫舍 你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。 给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金 阅读全文
posted @ 2019-09-06 09:23 李湘沅 阅读(446) 评论(0) 推荐(0) 编辑
摘要:vector 数据结构: 三个数据成员: iterator start;//指向vector目前使用空间头,即vector.begin() iterator finish;//指向vector目前使用空间尾,即vector.end() iterator end_of_storage;//指向vect 阅读全文
posted @ 2019-09-03 21:06 李湘沅 阅读(212) 评论(0) 推荐(0) 编辑
摘要:默认构造函数的生成: 在没有显示定义的情况下,编译器只会在四种情况下生成一个默认构造函数。 如果类成员X中没有特殊情况,则编译期只会生成一个不做任何工作的默认构造函数,这个默认构造函数是trivial的。 而只在四种情况下才会生成一个non-trivial的默认构造函数。 1.class的某个成员带 阅读全文
posted @ 2019-09-03 15:30 李湘沅 阅读(345) 评论(0) 推荐(0) 编辑
摘要:这个题目真的抽象 题目描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。 你可以假设 nums1 和 nums2 不会同时为空。 中位数需要满足两个条件: 1.左侧和右侧数量相等 2.比 阅读全文
posted @ 2019-09-03 11:58 李湘沅 阅读(235) 评论(0) 推荐(0) 编辑