<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[heary29的专栏]]></title><description><![CDATA[停不下来的搬运！！]]></description><link>https://blog.youkuaiyun.com/heary29</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; heary29]]></copyright><item><title><![CDATA[c++ stl sort算法浅析]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/121163006</link><guid>https://blog.youkuaiyun.com/heary29/article/details/121163006</guid><author>heary29</author><pubDate>Fri, 05 Nov 2021 15:23:17 +0800</pubDate><description><![CDATA[参考：C++一道深坑面试题：STL里sort算法用的是什么排序算法？_yinn-优快云博客

sort算法使用了快速排序，插入排序以及堆排序，至于具体使用到哪种或者哪几种排序，还要根据具体的实际：

数据量大和数据量小都适合用快速排序吗？
	快速排序的时间复杂度不是稳定的nlogn，最坏情况会变成n^2，怎么解决复杂度恶化问题？
	快速排序递归实现时，怎么解决递归层次过深的问题？
	递归过深会引发什么问题？
	怎么控制递归深度？如果达到递归深度了还没排完序怎么办？
哪些STL容器需要用到sort算法 ：
]]></description><category></category></item><item><title><![CDATA[c++ ---深度探索C++对象模型读书笔记3]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/108990043</link><guid>https://blog.youkuaiyun.com/heary29/article/details/108990043</guid><author>heary29</author><pubDate>Sat, 10 Oct 2020 08:36:46 +0800</pubDate><description><![CDATA[3.Data 语意学

class X {}; // sizeof 得到1

class Y :public virtual X {}; // sizeof 得到8

class Z: public virtual X {}； // sizeof 得到8

class A:public Y, public Z {}; //sizeof 得到12



X中没有任何成员，但是它也不为空，它是有一个隐晦的1byte，那是被编译器安插进去的一个char,这使得这个class 生成的...]]></description><category></category></item><item><title><![CDATA[c++ ---深度探索C++对象模型读书笔记4]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/108990013</link><guid>https://blog.youkuaiyun.com/heary29/article/details/108990013</guid><author>heary29</author><pubDate>Sat, 10 Oct 2020 08:35:14 +0800</pubDate><description><![CDATA[Function 语言学

Nonstatic Member Function

 非静态成员函数至少必须和一般的nonmember function有相同的效率。编译器将“member函数实体”转换为对等的“nonmember函数实体”。

成员函数会在内部被转化为非成员函数形式：

改写函数的原型，以传入一个额外的参数this指针，到member function 中，用以提供一个存取管道，是class object得以调用该函数。
	将每一个“对nonstatic data member的...]]></description><category></category></item><item><title><![CDATA[c++ ---深度探索C++对象模型读书笔记1-2]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/108972757</link><guid>https://blog.youkuaiyun.com/heary29/article/details/108972757</guid><author>heary29</author><pubDate>Fri, 09 Oct 2020 09:27:04 +0800</pubDate><description><![CDATA[简单的对象模型：一个class object 的大小等于指针大小，乘以类成员的数量，原因是因为类对象中只保存类成员的slot。成员本身并不存在对象中，只有指向成员的指针存在对象中，是因为成员的类型不同，申请的内存不同的存储空间。
	表格驱动对象模型：把所有与memebers相关的信息抽出来，放在一个data member table 和一个member function table中，class object 本身则内含指向这两个表格的指针。
	C++ 对象模型：非静态成员被配置在每一个class obje]]></description><category></category></item><item><title><![CDATA[c++ 内存模型和程序内存结构]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/108972591</link><guid>https://blog.youkuaiyun.com/heary29/article/details/108972591</guid><author>heary29</author><pubDate>Fri, 09 Oct 2020 09:17:04 +0800</pubDate><description><![CDATA[堆：由程序员分配释放。

栈：局部变量，局部常量，返回值，参数。

静态存储区：全局静态变量，局部静态变量，全局常量指针，虚函数表。

常量存储区：全局常量，函数指针，常量数组。

代码区;



1.栈区（stack）：又编译器自动分配释放，存放函数的参数值，局部变量的值等，其操作方式类似于数据结构的栈。

2.堆区（heap）：一般是由程序员分配释放，若程序员不释放的话，程序结束时可能由OS回收，值得注意的是他与数据结构的堆是两回事，分配方式倒是类似于数据结构的链表。

3.未初始化数据区（BSS）：.]]></description><category></category></item><item><title><![CDATA[git管理--git命令]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/108972510</link><guid>https://blog.youkuaiyun.com/heary29/article/details/108972510</guid><author>heary29</author><pubDate>Fri, 09 Oct 2020 09:11:59 +0800</pubDate><description><![CDATA[一、本地操作：

1.其它

git init：初始化本地库

git status：查看工作区、暂存区的状态

git add &lt;file name&gt;：将工作区的“新建/修改”添加到暂存区

git rm --cached &lt;file name&gt;：移除暂存区的修改

git commit &lt;file name&gt;：将暂存区的内容提交到本地库

　　tip：需要再编辑提交日志，比较麻烦，建议用下面带参数的提交方法

git commit -m "提交日志" &lt;file]]></description><category></category></item><item><title><![CDATA[c++STL之 Traits技术]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/108972492</link><guid>https://blog.youkuaiyun.com/heary29/article/details/108972492</guid><author>heary29</author><pubDate>Fri, 09 Oct 2020 09:10:22 +0800</pubDate><description><![CDATA[Traits技术可以用来获得一个 类型 的相关信息的。

整体思想就是，在被萃取类中定义内嵌类型，在定义一个单独的提取类模板，针对被萃取类型进行模板偏特化。

首先假如有以下一个泛型的迭代器类，其中类型参数 T 为迭代器所指向的类型：template &lt;typename T&gt;class myIterator
{
...
};
当我们使用myIterator时，怎样才能获知它所指向的元素的类型呢？我们可以为这个类加入一个内嵌类型，像这样：template &lt;typename T&gt;cl.]]></description><category></category></item><item><title><![CDATA[c++ 深入探究之this指针的特性]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/108972463</link><guid>https://blog.youkuaiyun.com/heary29/article/details/108972463</guid><author>heary29</author><pubDate>Fri, 09 Oct 2020 09:08:59 +0800</pubDate><description><![CDATA[1、this指针的类型 类类型* const

2、this指针并不是对象本身的一部分，不影响sizeof的结果。

3、this的作用域在类成员函数的内部。

4、this指针是类成员函数的第一个默认隐含参数，编译器自动维护传递，类编写者不能显式传递。

5、只有在类的非静态成员函数中才可以使用this指针，其它任何函数都不可以。

6、如果参数个数确定，this指针通过寄存器ecx传递给被调用者，如果参数个数不确定，this指针在所有参数被压栈后压入堆栈
...]]></description><category></category></item><item><title><![CDATA[深入C++ 之逐位拷贝（bitwise copy）]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/108882035</link><guid>https://blog.youkuaiyun.com/heary29/article/details/108882035</guid><author>heary29</author><pubDate>Wed, 30 Sep 2020 12:17:07 +0800</pubDate><description><![CDATA[深入C++ 之逐位拷贝（bitwise copy）

提示：这里可以添加系列文章的所有文章的目录，目录需要自己手动添加
例如：第一章 Python 机器学习入门之pandas的使用

提示：写完文章后，目录可以自动生成，如何生成可参考右边的帮助文档




文章目录

系列文章目录
	前言
	一、pandas是什么？
	二、使用步骤
	1.引入库
		2.读入数据
	
	总结




前言

 最近有重新翻阅的侯捷老师的《深度探索C++对象模型》一书，依然别有新意源源涌来，不禁感叹经典书籍的魅力，...]]></description><category></category></item><item><title><![CDATA[C++成员函数在内存中的存储方式]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/105953147</link><guid>https://blog.youkuaiyun.com/heary29/article/details/105953147</guid><author>heary29</author><pubDate>Wed, 06 May 2020 16:19:21 +0800</pubDate><description><![CDATA[最近看到一篇文章写得非常透彻，不由让我有种非转载不可的冲动，感谢大神的不吝分享！

转载地址：https://blog.youkuaiyun.com/fuzhongmin05/article/details/59112081










...]]></description><category></category></item><item><title><![CDATA[关于i++和++i以及左值,右值]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/104939573</link><guid>https://blog.youkuaiyun.com/heary29/article/details/104939573</guid><author>heary29</author><pubDate>Wed, 18 Mar 2020 10:51:20 +0800</pubDate><description><![CDATA[i++就是先用了i的值(用于赋值之类的操作),再i自加1. 而++i就是把i的值先自加1再用作其他操作.

不过今天无意之间看到了帖子上有人说 i++=5;   //不合法

                                ++i=5;   //合法

   一. 这个问题牵涉到得首先是左值(L...]]></description><category></category></item><item><title><![CDATA[C++弱引用智能指针weak_ptr的用处]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/104939361</link><guid>https://blog.youkuaiyun.com/heary29/article/details/104939361</guid><author>heary29</author><pubDate>Wed, 18 Mar 2020 10:47:24 +0800</pubDate><description><![CDATA[转自：原文链接：https://blog.youkuaiyun.com/leeds1993/article/details/54563918

weak_ptr也是一个引用计数型智能指针，但是它不增加对象的引用计数，即弱引用。与之相对，shared_ptr是强引用，只要有一个指向对象的shared_ptr存在，该对象就不会析构，直到指向对象的最后一个shared_ptr析构或reset()时才会被销毁。

利...]]></description><category></category></item><item><title><![CDATA[c++11并行编程]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/102856759</link><guid>https://blog.youkuaiyun.com/heary29/article/details/102856759</guid><author>heary29</author><pubDate>Fri, 01 Nov 2019 14:24:59 +0800</pubDate><description><![CDATA[join()的作用是等待线程本对象销毁。

通过#include &lt;cstdatomic&gt;头文件中来使用对应于内置类型的原子类型定义，如atomic_llong.

也可以使用std::atomic&lt;T&gt; t;





atomic-integral-type和integral-type标识的是上表的原子类型，class-type则指自定义类型。读（load）写(stor...]]></description><category></category></item><item><title><![CDATA[c++11 指针空值、默认函数控制、]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/102856637</link><guid>https://blog.youkuaiyun.com/heary29/article/details/102856637</guid><author>heary29</author><pubDate>Fri, 01 Nov 2019 14:20:26 +0800</pubDate><description><![CDATA[指针空值常量nullptr,是一个编译时期的常量。不要对nullptr做取地址操作。

指针空值类型 nullptr_t.

所有定义为nullptr_t类型的数据都是等价的，行为也是完全一致。

nullptr_t类型数据可以隐式转换成任意一个指针类型。

nullptr_t类型不能转换为非指针类型，即使使用reinterpret_cast&lt;nullptr_t&gt;()的方式也是不可以...]]></description><category></category></item><item><title><![CDATA[C  11  decltype类型推导]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/102687149</link><guid>https://blog.youkuaiyun.com/heary29/article/details/102687149</guid><author>heary29</author><pubDate>Tue, 22 Oct 2019 17:38:47 +0800</pubDate><description><![CDATA[RTTI(运行时类型识别)：为每一个类型产生一个type_info类型数据，程序员可以在程序中使用typeid随时查询一个变量的类型，typeid返回的是type_info,在type_info中name()函数返回类型名字。c++11中又增加了hash_code函数返回该类型唯一的哈希值，用来对变量的类型随时进行比较。



decltype的类型推导是以一个普通的表达式为参数，返回该表达式的类...]]></description><category></category></item><item><title><![CDATA[C++11 Move semantics （移动语义）]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/102687019</link><guid>https://blog.youkuaiyun.com/heary29/article/details/102687019</guid><author>heary29</author><pubDate>Tue, 22 Oct 2019 17:36:16 +0800</pubDate><description><![CDATA[C++11加入了右值引用(value reference)的概念（用&amp;&amp;标识），用来区分对左值和右值的引用。左值就是一个有名字的对象，而右值则是一个无名对象（临时对象）。move语义允许修改右值（以前右值被看作是不可修改的，等同于const T&amp;类型）。c++11中所有的值必须是左值、右值、将亡值之一。

即：在使用右值引用的时候，因为右值是一个无名的临时对象，对于对象的移...]]></description><category></category></item><item><title><![CDATA[C++ 11 Range-based for loops]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/102686955</link><guid>https://blog.youkuaiyun.com/heary29/article/details/102686955</guid><author>heary29</author><pubDate>Tue, 22 Oct 2019 17:29:23 +0800</pubDate><description><![CDATA[Range-based for loops （基于范围的for循环）

 c++中for_each(first, end，func)主要是基于迭代器的原理，迭代器内含了自增操作。问题是必须告诉for循环体的界限范围。

为了在遍历容器时支持”foreach”用法，C++11扩展了for语句的语法。用这个新的写法，可以遍历C类型的数组、初始化列表以及任何重载了非成员的begin()...]]></description><category></category></item><item><title><![CDATA[redis命令小记]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/99732036</link><guid>https://blog.youkuaiyun.com/heary29/article/details/99732036</guid><author>heary29</author><pubDate>Mon, 19 Aug 2019 15:45:01 +0800</pubDate><description><![CDATA[字符串类型：
set key value
get key
getset key 要换的值
incr key
decr key
incrby key 要加的值
decrby key 要减的值
append key 要追加的值（key不存在则创建）





list类型：
lpush key value1 value2 在头部添加
rpush key value1 value2 在尾部添加
lp...]]></description><category></category></item><item><title><![CDATA[java基础探秘---Java内部类详解[内部、静态内部、匿名内部、局部内部]]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/99641650</link><guid>https://blog.youkuaiyun.com/heary29/article/details/99641650</guid><author>heary29</author><pubDate>Thu, 15 Aug 2019 16:26:21 +0800</pubDate><description><![CDATA[一.内部类基础

　　在Java中，可以将一个类定义在另一个类里面或者一个方法里面，这样的类称为内部类。广泛意义上的内部类一般来说包括这四种：成员内部类、局部内部类、匿名内部类和静态内部类。下面就先来了解一下这四种内部类的用法。

　　1.成员内部类

　　成员内部类是最普通的内部类，它的定义为位于另一个类的内部，形如下面的形式：


			1

			2

			3

			4

			5

	...]]></description><category></category></item><item><title><![CDATA[StarUML安装破解及使用简明教程]]></title><link>https://blog.youkuaiyun.com/heary29/article/details/92838912</link><guid>https://blog.youkuaiyun.com/heary29/article/details/92838912</guid><author>heary29</author><pubDate>Thu, 20 Jun 2019 11:25:04 +0800</pubDate><description><![CDATA[StarUML(简称SU)，是一种创建UML类图，生成类图和其他类型的统一建模语言(UML)图表的工具。StarUML是一个开源项目之一发展快、灵活、可扩展性强(zj).

StarUML官方下载地址： http://staruml.io/download

StarUML3破解

1.下载破解文件app.asar

app.asar下载地址：

https://download.youkuaiyun.com...]]></description><category></category></item></channel></rss>