摘要: C++ 线程两个问题: 线程间的互斥 线程间的通信 经典例子 : 生产者与消费者线程模型 #include<iostream> #include<stdlib.h> #include<string.h> #include<string> #include<unistd.h> #include<con 阅读全文
posted @ 2020-09-02 19:54 睡觉lc 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 竞态条件:多线程执行结果应该是一致的,不应该因CPU 对线程的调用顺序不一样,而导致结果不一样,这也是多线程对全局量的共享,导致数据不一致,因此要保证线程的安全 例子如下: #include<iostream> #include<stdlib.h> #include<string.h> #inclu 阅读全文
posted @ 2020-09-02 17:09 睡觉lc 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 简单的说:线程是可被调度的最小的指令序列,线程是操作系统的一部分,不同的操作系统,对实现,和调度策略不同。 多线程的优势: 快速响应:比如在一个单线程程序中,如果主线程block在一个费时的任务中(比如I/O操作),整个程序会“冻结”住,无法响应外界的输出。通过将交互任务与这个费时的任务独立成两个线 阅读全文
posted @ 2020-09-02 14:55 睡觉lc 阅读(279) 评论(0) 推荐(0) 编辑
摘要: c++中函数对象,其实就是C中函数指针,也就是()的运算符重载函数 因此把 有operator() 重载函数的对象称作函数对象 与C语言的 函数指针相比 // C 语言函数指针的做法 // 即使写出inline 函数 但是当作为函数指针时,也无法内联 template<typename T> inl 阅读全文
posted @ 2020-09-01 19:55 睡觉lc 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 背景 : c++ 多态可以大致分为两种: 继承(动态的多态) 模版(静态的多态) 分类 : 函数模版 类模版 函数模版 : // 普通函数 void Swap(int & a, int & b) { int tmp = a; a = b ; b = tmp; } // 函数模版 template < 阅读全文
posted @ 2020-09-01 19:15 睡觉lc 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 首先const 修饰的变量不能在作为左值,初始化之后不能在修改 在C语言中 :const int a = 20 这个a 只能叫做常变量,不能作为数组的大小开辟内存 ,并且通过指针就可以修改 (可以不初始化) const int a = 20; int *p = (int *) &a; *p = 30 阅读全文
posted @ 2020-09-01 17:36 睡觉lc 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 一 :new 与 malloc 的区别 malloc 是按字节开辟的,new是按类型开辟内存的 malloc 返回的void* , 而new 会返回指定类型的地址 malloc 只负责开辟内存,new 不但开辟内存,还可以初始化。 malloc 开辟内存失败返回NULL, 而new 会抛出异常 ma 阅读全文
posted @ 2020-09-01 09:36 睡觉lc 阅读(184) 评论(0) 推荐(0) 编辑
摘要: 容器迭代器 : 正向普通迭代器 :::iterator 正向常迭代器 :::const_iterator 反向迭代器 :::reverse_iterator // rbegin :最后一个迭代器的表示 rend : 第一个迭代器的前驱位置 遍历 rbegin > rend 使用++ 反向常量迭代器 阅读全文
posted @ 2020-09-01 09:06 睡觉lc 阅读(138) 评论(0) 推荐(0) 编辑
摘要: 无序关联容器 >链式哈希表 unordered_map 用哈希函数组织的map unordered_set 用哈希函数组织的set unordered_multimap 哈希组织的map;关键字可以重复出现 unordered_multiset 哈希组织的set;关键字可以重复出现 有序关联容器 > 阅读全文
posted @ 2020-08-31 18:26 睡觉lc 阅读(118) 评论(0) 推荐(0) 编辑
摘要: 1 适配器的底层没有自己的数据结构,是另一个容器的封装,方法全部依赖底层的数据结构的方法 2 没有实现自己的迭代器 例如 stack > 底层依赖deque queue > 底层依赖deque priority_queue > 底层依赖vector 默认把数据组织成大根堆 为什么stack,queu 阅读全文
posted @ 2020-08-31 17:55 睡觉lc 阅读(137) 评论(0) 推荐(0) 编辑