- 博客(5)
- 收藏
- 关注
原创 C++11的shared_ptr有可能导致函数调用栈溢出
最开始关注这个问题是在测试C++ Concurrency in Action这本书提及的几个版本stack数据结构的实现,其中lock free版本的实现时,需要精巧的内存回收机制,其中在介绍count reference内存回收机制时,作者认为shared_ptr是有reference count的指针,如果某个平台支持lock free版本的shared_ptr,可以使用它来简化count r...
2018-09-25 17:58:05 620
原创 C++ 标准关于“carries a dependency"的定义
http://open-std.org/JTC1/SC22/WG21/docs/papers/2011/n3242.pdf 是c++11的标准文档的路径。1.10.9其中描述了关于“carries a dependency"的定义,其中的关键字“left operand”一定要理解成剩下的,未参与“evaluation”的操作数,如果理解成“左操作数”那么将误入歧途。...
2018-04-17 11:54:34 393
原创 最坏情况下保证时间复杂度为N*logN的快速排序
快速排序的平均时间复杂度是N*logN,同时其也是实践已知的最快的通用排序算法,但是其最坏情况的时间复杂度依然是N的平方,但是只要我们对快速排序算法稍作修改,就可以保证其最坏情况的时间复杂度也是N*logN。思路就是在递归达到一定深度后,将快速排序的递归调用改为堆排序,下面是我实现的代码
2017-07-03 23:34:29 2562
原创 整数的线性排序算法-基数排序
基数排序对被排序的类型有很强的要求,如对整数的排序,就是在我们知道整数在内存中的表示方法的前提下,才得以实现。当然其对被排序类型要求严格,带来的回报就是时间复杂度达到了线性。下面是我实现的基数排序,实现了算法本身,测试方法,时间统计等代码逻辑
2017-07-03 22:19:16 494
原创 C++ nontrival class 值传递的机制。
研究C++已经有一段时间了,我那时扔掉了手头的中文版c++ primer,开始阅读英文版,用时一年半多才勉强开完一遍,增加了一千一百多个注释,如果确认没有版权问题,我会把它共享。再给gcc提bug时,通过邮件交流得知C++标准化工作组的网站,http://open-std.org/JTC1/SC22/WG21/,后面有陆续接触了C++创始人写的书,以及他在自己home page http://
2015-09-08 22:13:31 571
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人