- 博客(10)
- 收藏
- 关注
原创 c++ vtable 虚函数表
1.作用:用于有虚函数对象的指针,其在运行期间决定实际应该执行的函数的地址2.内存布局:内存的开头位置(64位),即内存开头8字节内容为vtable的的地址值而vtable的顺序存放函数地址值(64位顺序数组)3.代码调用:#include #include class P { public: virtual void test() {
2017-12-29 15:38:20 580
转载 右值引用
右值引用,更多是一种规范,是程序员和编译器的写协作。右值引用的使用,是编译器允许程序员直接访问临时变量(你用右值引用,编译器也安常规认为其是临时的,会很快被销毁的对象,可能实际并不是,可能是左值转换过来的),并不是你用了右值引用,就能直接得到效率的提升的,需要你定义移动构造函数甚至是移动赋值函数,在函数内部,你可以获取得到访问临时变量的能力,而不是通过拷贝得到,你可以将该临时变量的资源
2017-12-29 01:04:58 201
转载 磁盘没有我们想象的那么慢
内存的访问速度比硬盘快,这是毋庸置疑的,但是到底快多少?通常的说法是:内存访问速度是纳秒级(10的-9次方),硬盘的访问速度是微秒级(10的-3次方)。找到一个稍微科学点的测试数据,如下图要对比内存和硬盘的速度,要分为两种请款对比:1.顺序访问:这种情况下,内存访问速度仅仅是硬盘访问速度的6~7倍(358.2M / 53.2M = 6.7)2.随机访问:这种
2017-12-28 17:51:35 171
原创 stl 算法 简略
排序算法:sort:综合策略的排序,1.先使用intro_sort进行排序1.1 intro_sort为快速排序的分块方式,当分块的深度大于阀值时采用堆排对剩下的数据进行排序。1.2 经1.1后的intro_sort排序后,大致上数据处于大部分有序的状态2.然后对1后的大致有序的状态,进行最终的插入排序,因为1后的数据大致是有序的,因此插入排序的实际效率是很高的,不会是O(n^
2017-12-25 12:20:50 144
原创 stl 容器 简略
1.vector:动态连续数组,空间不足时分配,重新分配双倍空间进行存储,数据的插入和删除会导致后续数据的拷贝移动 2.list:双向循环链表,非连续空间 3.map:红黑树,log级别,空间内存消耗O(N)插入:递归两层上升,最多旋转2次,3 case删除:递归1层上升,最多旋转3次, 4 case 4.set:红黑树,log级别,空间内存消耗O...
2017-12-23 15:46:02 168
转载 stl 仿函数(函数对象)
定义(stl源码剖析):仿函数其实上就是一个"行为类似函数"的对象。即主体是对象,只是使用起来像一个函数。传递函数指针:templatebool compare_to(const T& x, const T &y) { return x > y;}templatevoid print_compare(T fun) { std::cout << fun(3
2017-12-23 14:00:21 190
原创 stl rebind 机制
作用:某个模板类接受一个策略已特化类型的类型(如内存分配器allocator),那么我需要使用相同的策略,但是类型需要被替换(重新绑定),这时候便可以使用rebind机制,来实现策略不变,而更换类型来得到需要的类型如:在我们使用相关容器的时候,如vector, map等,我们一般是不需要传入allocator类型的,因为会默认填入std::allocator,即std::a
2017-12-22 12:00:54 3367
转载 stl traits 萃取特征技术
定义:参考stl源码剖析,traits就像一台“特征萃取机”,榨取各个迭代器的特征(相应类型)如:简单模版的定义templateclass DemoTraits {typedef typename T value_type;} ;我们可以通过DemoTraits::value_type来得到模版的类型。这对于非指针类型是可以的那如果传入的是指
2017-12-21 21:08:56 331
原创 stl stl_construct.h 要点
stl_construct.h作用:对已分配的内存进行调用构造函数和析构函数操作调用构造函数::new(static_cast(__p)) _T1(std::forward(__args)...);以_p指针所执行的地址,使用_T1类型的构造函数(入参_args)进行初始化,即_p可以作为_T1类型使用了调用析构函数 std::_Destroy_a
2017-12-21 10:33:32 807
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人