![](https://img-blog.csdnimg.cn/20191022172705301.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
C++
文章平均质量分 67
heary29
这个作者很懒,什么都没留下…
展开
-
c++ stl sort算法浅析
参考:C++一道深坑面试题:STL里sort算法用的是什么排序算法?_yinn-CSDN博客sort算法使用了快速排序,插入排序以及堆排序,至于具体使用到哪种或者哪几种排序,还要根据具体的实际:数据量大和数据量小都适合用快速排序吗? 快速排序的时间复杂度不是稳定的nlogn,最坏情况会变成n^2,怎么解决复杂度恶化问题? 快速排序递归实现时,怎么解决递归层次过深的问题? 递归过深会引发什么问题? 怎么控制递归深度?如果达到递归深度了还没排完序怎么办?哪些STL容器需要用到sort算法 :转载 2021-11-05 15:23:17 · 344 阅读 · 0 评论 -
c++ ---深度探索C++对象模型读书笔记3
3.Data 语意学class X {}; // sizeof 得到1class Y :public virtual X {}; // sizeof 得到8class Z: public virtual X {}; // sizeof 得到8class A:public Y, public Z {}; //sizeof 得到12X中没有任何成员,但是它也不为空,它是有一个隐晦的1byte,那是被编译器安插进去的一个char,这使得这个class 生成的...原创 2020-10-10 08:36:46 · 265 阅读 · 0 评论 -
c++ ---深度探索C++对象模型读书笔记4
Function 语言学Nonstatic Member Function 非静态成员函数至少必须和一般的nonmember function有相同的效率。编译器将“member函数实体”转换为对等的“nonmember函数实体”。成员函数会在内部被转化为非成员函数形式:改写函数的原型,以传入一个额外的参数this指针,到member function 中,用以提供一个存取管道,是class object得以调用该函数。 将每一个“对nonstatic data member的...原创 2020-10-10 08:35:14 · 240 阅读 · 0 评论 -
c++ ---深度探索C++对象模型读书笔记1-2
简单的对象模型:一个class object 的大小等于指针大小,乘以类成员的数量,原因是因为类对象中只保存类成员的slot。成员本身并不存在对象中,只有指向成员的指针存在对象中,是因为成员的类型不同,申请的内存不同的存储空间。 表格驱动对象模型:把所有与memebers相关的信息抽出来,放在一个data member table 和一个member function table中,class object 本身则内含指向这两个表格的指针。 C++ 对象模型:非静态成员被配置在每一个class obje原创 2020-10-09 09:27:04 · 258 阅读 · 0 评论 -
c++ 内存模型和程序内存结构
堆:由程序员分配释放。栈:局部变量,局部常量,返回值,参数。静态存储区:全局静态变量,局部静态变量,全局常量指针,虚函数表。常量存储区:全局常量,函数指针,常量数组。代码区;1.栈区(stack):又编译器自动分配释放,存放函数的参数值,局部变量的值等,其操作方式类似于数据结构的栈。2.堆区(heap):一般是由程序员分配释放,若程序员不释放的话,程序结束时可能由OS回收,值得注意的是他与数据结构的堆是两回事,分配方式倒是类似于数据结构的链表。3.未初始化数据区(BSS):.原创 2020-10-09 09:17:04 · 296 阅读 · 0 评论 -
c++STL之 Traits技术
Traits技术可以用来获得一个 类型 的相关信息的。整体思想就是,在被萃取类中定义内嵌类型,在定义一个单独的提取类模板,针对被萃取类型进行模板偏特化。首先假如有以下一个泛型的迭代器类,其中类型参数 T 为迭代器所指向的类型:template <typename T>class myIterator{...};当我们使用myIterator时,怎样才能获知它所指向的元素的类型呢?我们可以为这个类加入一个内嵌类型,像这样:template <typename T>cl.原创 2020-10-09 09:10:22 · 224 阅读 · 0 评论 -
c++ 深入探究之this指针的特性
1、this指针的类型 类类型* const2、this指针并不是对象本身的一部分,不影响sizeof的结果。3、this的作用域在类成员函数的内部。4、this指针是类成员函数的第一个默认隐含参数,编译器自动维护传递,类编写者不能显式传递。5、只有在类的非静态成员函数中才可以使用this指针,其它任何函数都不可以。6、如果参数个数确定,this指针通过寄存器ecx传递给被调用者,如果参数个数不确定,this指针在所有参数被压栈后压入堆栈...原创 2020-10-09 09:08:59 · 251 阅读 · 0 评论 -
深入C++ 之逐位拷贝(bitwise copy)
深入C++ 之逐位拷贝(bitwise copy)提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录 前言 一、pandas是什么? 二、使用步骤 1.引入库 2.读入数据 总结前言 最近有重新翻阅的侯捷老师的《深度探索C++对象模型》一书,依然别有新意源源涌来,不禁感叹经典书籍的魅力,...原创 2020-09-30 12:17:07 · 1737 阅读 · 1 评论 -
C++成员函数在内存中的存储方式
最近看到一篇文章写得非常透彻,不由让我有种非转载不可的冲动,感谢大神的不吝分享!转载地址:https://blog.csdn.net/fuzhongmin05/article/details/59112081...转载 2020-05-06 16:19:21 · 269 阅读 · 0 评论 -
关于i++和++i以及左值,右值
i++就是先用了i的值(用于赋值之类的操作),再i自加1. 而++i就是把i的值先自加1再用作其他操作.不过今天无意之间看到了帖子上有人说 i++=5; //不合法 ++i=5; //合法 一. 这个问题牵涉到得首先是左值(L...转载 2020-03-18 10:51:20 · 2246 阅读 · 1 评论 -
C++弱引用智能指针weak_ptr的用处
转自:原文链接:https://blog.csdn.net/leeds1993/article/details/54563918weak_ptr也是一个引用计数型智能指针,但是它不增加对象的引用计数,即弱引用。与之相对,shared_ptr是强引用,只要有一个指向对象的shared_ptr存在,该对象就不会析构,直到指向对象的最后一个shared_ptr析构或reset()时才会被销毁。利...转载 2020-03-18 10:47:24 · 289 阅读 · 0 评论 -
c++11并行编程
join()的作用是等待线程本对象销毁。通过#include <cstdatomic>头文件中来使用对应于内置类型的原子类型定义,如atomic_llong.也可以使用std::atomic<T> t;atomic-integral-type和integral-type标识的是上表的原子类型,class-type则指自定义类型。读(load)写(stor...原创 2019-11-01 14:24:59 · 2621 阅读 · 0 评论 -
c++11 指针空值、默认函数控制、
指针空值常量nullptr,是一个编译时期的常量。不要对nullptr做取地址操作。指针空值类型 nullptr_t.所有定义为nullptr_t类型的数据都是等价的,行为也是完全一致。nullptr_t类型数据可以隐式转换成任意一个指针类型。nullptr_t类型不能转换为非指针类型,即使使用reinterpret_cast<nullptr_t>()的方式也是不可以...原创 2019-11-01 14:20:26 · 697 阅读 · 0 评论 -
C++11 Move semantics (移动语义)
C++11加入了右值引用(value reference)的概念(用&&标识),用来区分对左值和右值的引用。左值就是一个有名字的对象,而右值则是一个无名对象(临时对象)。move语义允许修改右值(以前右值被看作是不可修改的,等同于const T&类型)。c++11中所有的值必须是左值、右值、将亡值之一。即:在使用右值引用的时候,因为右值是一个无名的临时对象,对于对象的移...原创 2019-10-22 17:36:16 · 1036 阅读 · 0 评论 -
C 11 decltype类型推导
RTTI(运行时类型识别):为每一个类型产生一个type_info类型数据,程序员可以在程序中使用typeid随时查询一个变量的类型,typeid返回的是type_info,在type_info中name()函数返回类型名字。c++11中又增加了hash_code函数返回该类型唯一的哈希值,用来对变量的类型随时进行比较。decltype的类型推导是以一个普通的表达式为参数,返回该表达式的类...原创 2019-10-22 17:38:47 · 371 阅读 · 0 评论 -
C++ 11 Range-based for loops
Range-based for loops (基于范围的for循环) c++中for_each(first, end,func)主要是基于迭代器的原理,迭代器内含了自增操作。问题是必须告诉for循环体的界限范围。为了在遍历容器时支持”foreach”用法,C++11扩展了for语句的语法。用这个新的写法,可以遍历C类型的数组、初始化列表以及任何重载了非成员的begin()...原创 2019-10-22 17:29:23 · 354 阅读 · 0 评论