<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Charle_s的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Charle_s</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Charle_s]]></copyright><item><title><![CDATA[智能指针的一些知识]]></title><link>https://blog.youkuaiyun.com/Charle_s/article/details/122787303</link><guid>https://blog.youkuaiyun.com/Charle_s/article/details/122787303</guid><author>Charle_s</author><pubDate>Tue, 08 Mar 2022 22:23:05 +0800</pubDate><description><![CDATA[智能指针中的auto_ptr是不推荐使用的，他为了解决浅拷贝问题，实际上是是每次拷贝一次，就将上一个指针置空，只让最后一个指向的指针来管理内存，这样就无法访问之前的指针了。

scoped_ptr没用拷贝构造和构造函数，不允许赋值

所以还是推荐unique_ptr
...]]></description><category></category></item><item><title><![CDATA[关于面向对象的优化]]></title><link>https://blog.youkuaiyun.com/Charle_s/article/details/122393855</link><guid>https://blog.youkuaiyun.com/Charle_s/article/details/122393855</guid><author>Charle_s</author><pubDate>Fri, 04 Feb 2022 23:23:36 +0800</pubDate><description><![CDATA[C++编译器对对象构造的优化：用临时对象生成新对象时候，临时对象就不产生了，直接构造新对象就可以了

Test t = Test（20） 与 Test t(20) 没有区别，都是只调用构造函数就没有了

t = Test(30) 临时 对象就必须生成 显式生成临时对象

t = 30也可以编译通过。隐式生成临时对象

用指针指向临时变量是不安全的，临时对象出了这条语句就释放了，指针从而成为野指针。但是引用是安全的，声明周期将和引用一样。


...]]></description><category></category></item><item><title><![CDATA[关于左值引用和右值引用]]></title><link>https://blog.youkuaiyun.com/Charle_s/article/details/122482309</link><guid>https://blog.youkuaiyun.com/Charle_s/article/details/122482309</guid><author>Charle_s</author><pubDate>Thu, 13 Jan 2022 21:29:11 +0800</pubDate><description><![CDATA[所谓的左值就是有内存，有名字 。右值一般是临时对象

int &amp;&amp; a是右值引用，只能绑定右值 int&amp;&amp; a = 20;

int &amp; a就是左值引用，可以绑定左值。如果要让他绑定常数，可以 const int&amp; a = 20; 这其实先当于是int temp= 20; const int&amp; a = temp;

还是右值引用好，可以修改临时变量的值
...]]></description><category></category></item><item><title><![CDATA[关于容器适配器]]></title><link>https://blog.youkuaiyun.com/Charle_s/article/details/122310635</link><guid>https://blog.youkuaiyun.com/Charle_s/article/details/122310635</guid><author>Charle_s</author><pubDate>Tue, 04 Jan 2022 20:40:02 +0800</pubDate><description><![CDATA[容器适配器没有自己的数据结构，他是另外一个容器的封装，他的方法，全部由底层依赖的容器进行实现，并且没有实现自己的迭代器

栈，队列都是基于deque的容器适配器，优先级队列基于vector

为什么要基于deque而不是vector？

1.vector初始内存使用效率低，deque初始内存4096/sizeof（），vector还需要慢慢增长

2.对于queue来说，需要尾部插入和头部删除需要o（1）

3.vector需要大片的连续内存，而deque只需要分段的内存。存储大量数据时，deque内存利用]]></description><category></category></item><item><title><![CDATA[vector与deque的各种比较]]></title><link>https://blog.youkuaiyun.com/Charle_s/article/details/122288110</link><guid>https://blog.youkuaiyun.com/Charle_s/article/details/122288110</guid><author>Charle_s</author><pubDate>Tue, 04 Jan 2022 16:20:39 +0800</pubDate><description><![CDATA[vector:是动态开辟的数组，每次以原来空间的二倍大小进行扩容

增加：

push_back() 时间复杂度0（1） 可能导致扩容

insert it迭代器指向的位置添加 0(n)



双端队列deque的容量为4096/sizeof(T)

first和last指针在中间控制
...]]></description><category></category></item><item><title><![CDATA[C++ primer笔记 第六章]]></title><link>https://blog.youkuaiyun.com/Charle_s/article/details/120752217</link><guid>https://blog.youkuaiyun.com/Charle_s/article/details/120752217</guid><author>Charle_s</author><pubDate>Wed, 27 Oct 2021 20:38:29 +0800</pubDate><description><![CDATA[6.1.1 局部对象

对象的声明周期是指程序执行过程中该对象存在的一段时间。

对于只存在于块执行期间的对象称为自动对象。

局部静态对象：static int 这种来定义局部变量，只在程序第一次经过定义语句时候初始化，其他时候再次定义也不会有影响，同时出了函数块也不会销毁，直到程序终止才销毁。

例如：


int repeat() {
	static int x = 0;
	return x++;
}

一直反复调用这个程序，将会输出012345... 可以看出x并没有随函数结束而终止。

6.1.2]]></description><category></category></item><item><title><![CDATA[C++ primer笔记 第四章]]></title><link>https://blog.youkuaiyun.com/Charle_s/article/details/120598347</link><guid>https://blog.youkuaiyun.com/Charle_s/article/details/120598347</guid><author>Charle_s</author><pubDate>Sat, 09 Oct 2021 22:14:25 +0800</pubDate><description><![CDATA[4.1基础

4.4.1 基本概念

一元运算符：就像取地址符&amp;或者解引用符*这样的

二元运算符：相等6运算符== 或者乘法运算符*这样的

左值：可以取地址，有名字的 ，对象用作左值时候，用的是对象在内存中的位置

右值：临时的变量，用的是对象的值。 有时候可以用左值代替

优先级：一个对象的函数 &gt; 一元运算符（*）


...]]></description><category></category></item><item><title><![CDATA[C++ primer笔记 第三章]]></title><link>https://blog.youkuaiyun.com/Charle_s/article/details/120464308</link><guid>https://blog.youkuaiyun.com/Charle_s/article/details/120464308</guid><author>Charle_s</author><pubDate>Sat, 02 Oct 2021 22:23:04 +0800</pubDate><description><![CDATA[b3.1 命名空间using声明

using std::cin 声明后可以直接用cin，不用加std了

注意头文件最好不要用using

3.2 标准库类型 string

如果用等号初始化string，就叫做拷贝初始化

反之叫直接初始化。例如 string s(10, 'S');

可以读空格的输入 getline（cin， str）；

str.size()返回的是unsigned 类型，因此最好不要和int型进行比较和计算

例如：


	string str = "asfas";
	int..]]></description><category></category></item><item><title><![CDATA[C++ primer笔记 第二章]]></title><link>https://blog.youkuaiyun.com/Charle_s/article/details/120377526</link><guid>https://blog.youkuaiyun.com/Charle_s/article/details/120377526</guid><author>Charle_s</author><pubDate>Fri, 24 Sep 2021 21:39:48 +0800</pubDate><description><![CDATA[2.11

一字节等于4位

char  1字 = 4字节 = 32bite

int 4字

double 8字

2.12

无符号 unsigned + int/char  超出范围的话，结果是取模后的余数

如unsigned char 的范围是0-255，将-1赋值给这个类型，结果是1%256的余数，结果是255。

无符号数和有符号数相加，会得到无符号数。

2.13

以0开头的整数代表八进制数，以0x开头的是十六进制数

2.21

变量就是对象

2.22

多个文件中使用同一变量...]]></description><category></category></item><item><title><![CDATA[无连接算法（join-less）原理及其实现]]></title><link>https://blog.youkuaiyun.com/Charle_s/article/details/117717458</link><guid>https://blog.youkuaiyun.com/Charle_s/article/details/117717458</guid><author>Charle_s</author><pubDate>Tue, 08 Jun 2021 22:20:48 +0800</pubDate><description><![CDATA[首先，介绍一些概念：

星形邻居物化模型：分为相交的和不相交的，不相交的用处更大，更实用
]]></description><category></category></item><item><title><![CDATA[全连接算法（join-base)原理及实现]]></title><link>https://blog.youkuaiyun.com/Charle_s/article/details/117717324</link><guid>https://blog.youkuaiyun.com/Charle_s/article/details/117717324</guid><author>Charle_s</author><pubDate>Tue, 08 Jun 2021 22:15:10 +0800</pubDate><description><![CDATA[首先，拿到这样的图，表示空间临近关系的空间实例。


]]></description><category></category></item></channel></rss>