随笔分类 - C++
摘要:迭代器 容器和算法的胶合剂,是一种“泛型指针” 1. 五种迭代器 (1)输入迭代器 只能读,不能写 只支持自增 (2)输出迭代器 只能写,不能读 只支持自增 (3)前向迭代器 读 / 写 只支持自 (4)双向迭代器 读 / 写 自增和自减 (5)随机迭代器 读 / 写 支持完整迭代器算术运算 输入迭
阅读全文
摘要:静态库:1. 编译时链接;2.浪费空间和资源,如果多个程序链接了同一个库,则每个生成的可执行文件就都会有一个库的副本,必然浪费系统的空间;3.若静态库修改了,需要重新进行编译所有链接的程序 动态库:1. 运行时链接2. 运行时被链接,程序运行速度稍慢3.动态库在程序运行时被链接,所以磁盘上只需要保留
阅读全文
摘要:#include <iostream> template<typename T> class SmartPointer { public: SmartPointer(T* ptr):_ptr(ptr) { if (ptr) _count = new size_t(1); else _count =
阅读全文
摘要:<1> 智能指针shared_ptr本身(底层实现原理是引用计数)是线程安全的智能指针的引用计数在手段上使用了atomic原子操作,只要shared_ptr在拷贝或赋值时增加引用,析构时减少引用就可以了。首先原子是线程安全的,所有智能指针在多线程下引用计数也是安全的,也就是说智能指针在多线程下传递使
阅读全文
摘要:生产者消费者实现 —— 信号量实现方式 #include <iostream> #include <pthread> #include <semaphore.h> #include <cstdlib> using namespace std; pthread_mutex_t mutex; sem_t
阅读全文
摘要:new能够将内存分配和对象构造 结合一起,delete将对象析构和内存释放结合在一起。但是当希望将内存分配和对象构造分离时,即分配大内存,当真正需要时才进行对象的构造,我们可以使用allocator。 对象和构造组合在一起可能会导致不必要的浪费 标准库中allocator在memory头文件中,他帮
阅读全文
摘要:利用一个对象指针实现通过拷贝构造函数和赋值运算符实现计数引用 注意:析构是要判断当前的值是否为1,如果为1则删除,否则减一 class HasPtr { public: HasPtr(const string& s = string()) : ps(new string(s)), i(0), use
阅读全文

浙公网安备 33010602011771号