随笔分类 -  stl源码剖析阅读笔记

lambda 与 priority_queue 以及 function 以及 bind
摘要:lambda是一种可调用对象,它是一个对象,每个lambda都有自己不同的类型。 年轻时以为STL和lambda混用时会有一些奇怪现象,比如我无法像这样定义优先队列: 但是却可以这样用sort 以及可以这样用sort 之所以会出现这样的疑问,是因为没有搞清楚函数对象 (也叫可调用对象) 和 模板的类 阅读全文

posted @ 2016-03-11 23:58 远近闻名的学渣 阅读(4359) 评论(0) 推荐(2)

二叉搜索的正确姿势
摘要:一般来说,二叉搜索是这样实现的: 然而这样是非常不合理,第一,left、right用到了左移操作,左移操作对于有符号数,最左添0还是添符号位,在c++里是未定义行为(不过在这里left、right一般大于0,所以符号位就是0),left、right、mid应该用无符号类型,这样可以保证不会溢出,如果 阅读全文

posted @ 2015-10-13 19:15 远近闻名的学渣

STL中的迭代器与traits技术
摘要:一,STL对其中的各个组件都有一定的规范要求,即如果自己实现其中的某个组件,那么这个组件必须符合STL规范才能与其他的STL组件兼容。 上篇在提到空间配置器的时候也提到过必须实现rebind,allocate,deallocate,construct,destroy等方法,在STL中,迭代器的类型... 阅读全文

posted @ 2015-09-17 21:46 远近闻名的学渣

一个简单的空间配置器
摘要:STl源码剖析中的一个简单空间配置器#ifndef _JJALLOC_#define _JJALLOC_#include #include #include #include namespace JJ {template inline T* _allocate(std::ptrdiff_t size... 阅读全文

posted @ 2015-09-13 22:19 远近闻名的学渣

深入理解c++中的new与delete
摘要:一,new与delete的细节假如有下面的代码:string *sp = new string("a value");string *arr = new string[10];整个new的语句可以分为三步完成,首先,编译器使用名为operator new(operator new[])的标准库函数,... 阅读全文

posted @ 2015-09-13 22:16 远近闻名的学渣

for循环中的小技巧
摘要:for(int i; ; ++i) { dosomething; if (i == xxx) { do something unique; break; } else { do something before ++i; }}处理一个循环,需要对最后一个元素特殊处理,(如链... 阅读全文

posted @ 2015-09-13 22:16 远近闻名的学渣

c++中的命名空间
摘要:在阅读new 与delete相关的东西时,被各种命名空间全局作用域搞得有点乱,在此记录一下。一、命名空间的定义只要能出现在全局作用域中的东西就可以出现在命名空间中。通常这么定义命名空间:namespace Name { decl and define} // 无须分号,像代码块,而不是类命名空间有... 阅读全文

posted @ 2015-09-13 21:47 远近闻名的学渣

导航