<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[AkieMo的博客]]></title><description><![CDATA[A student]]></description><link>https://blog.csdn.net/AkieMo</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; AkieMo]]></copyright><item><title><![CDATA[【C++】IO流]]></title><link>https://blog.csdn.net/AkieMo/article/details/132350194</link><guid>https://blog.csdn.net/AkieMo/article/details/132350194</guid><author>AkieMo</author><pubDate>Thu, 17 Aug 2023 20:51:48 +0800</pubDate><description><![CDATA[C语言中我们用到的最频繁的输入输出方式就是scanf ()与printf()。scanf(): 从标准输入设备(键 盘)读取数据，并将值存放在变量中。printf(): 将指定的文字/字符串输出到标准输出设备(屏幕)。注意宽度输出和精度输出控制。C语言借助了相应的缓冲区来进行输入与输出。]]></description><category></category></item><item><title><![CDATA[【C++】类型转换]]></title><link>https://blog.csdn.net/AkieMo/article/details/132306823</link><guid>https://blog.csdn.net/AkieMo/article/details/132306823</guid><author>AkieMo</author><pubDate>Tue, 15 Aug 2023 20:40:57 +0800</pubDate><description><![CDATA[用于非多态类型的转换(静态转换)，编译器隐式执行的任何类型转换都可以用。但不能用于两个的类型进行转换。int。]]></description><category></category></item><item><title><![CDATA[【C++】面试题]]></title><link>https://blog.csdn.net/AkieMo/article/details/132278215</link><guid>https://blog.csdn.net/AkieMo/article/details/132278215</guid><author>AkieMo</author><pubDate>Mon, 14 Aug 2023 16:06:44 +0800</pubDate><description><![CDATA[多态的底层是通过一个虚函数指针实现的，虚函数指针指向一块虚函数表，虚函数表当中存储的各个函数的地址，虚函数表是一个指针数组，虚函数表中存储的是函数指针，当一个表达式满足多态的时候，它确定类型的时候就不是在编译阶段，而是在运行阶段来判断是什么类型，然后根据不同的对象来调用虚函数表。封装：封装是一种集中管理的思想，把内部的数据和实现方法组合在一起，并且不对外暴漏内部的数据和实现方法，只对外提供几个接口来完成函数的调用和数据的操作，保证了数据的安全性和一致性。不会修改引用计数，所以能够很好的解决循环引用的问题。]]></description><category></category></item><item><title><![CDATA[为什么需要智能指针？]]></title><link>https://blog.csdn.net/AkieMo/article/details/132252552</link><guid>https://blog.csdn.net/AkieMo/article/details/132252552</guid><author>AkieMo</author><pubDate>Sat, 12 Aug 2023 19:24:44 +0800</pubDate><description><![CDATA[问：如果p1这里new 抛异常会如何？p1、p2不会开空间，内存没有释放问：如果p2这里new 抛异常会如何？p2不会开空间，内存没有得到释放问：如果div调用这里又会抛异常会如何？答：内存没有被释放。]]></description><category></category></item><item><title><![CDATA[【C++】异常的使用和细节]]></title><link>https://blog.csdn.net/AkieMo/article/details/132220587</link><guid>https://blog.csdn.net/AkieMo/article/details/132220587</guid><author>AkieMo</author><pubDate>Thu, 10 Aug 2023 22:51:18 +0800</pubDate><description><![CDATA[异常处理（exception handling）是C++的一项语言机制，用于在程序能处理异常事件。
异常事件在C++中表示为异常对象（exception object）。异常事件发生时，由操作系统为程序设置当前异常对象，然后执行程序的当前异常处理代码块，在包含了异常出现点的最内层的try块，依次匹配同级的catch语句。如果匹配catch语句成功，则在该catch块内处理异常；然后执行当前try...catch...块之后的代码。如果在当前的try...catch...块没有能匹配该异常对象的catch语句]]></description><category></category></item><item><title><![CDATA[【C++】bind包装器]]></title><link>https://blog.csdn.net/AkieMo/article/details/132164164</link><guid>https://blog.csdn.net/AkieMo/article/details/132164164</guid><author>AkieMo</author><pubDate>Tue, 08 Aug 2023 12:09:38 +0800</pubDate><description><![CDATA[调用bind的一般形式：**auto newCallable = bind(callable,arg_list);**其中，newCallable本身是一个可调用对象，arg_list是一个逗号分隔的参数列表，对应给定的 callable的参数。]]></description><category></category></item><item><title><![CDATA[【C++】function包装器]]></title><link>https://blog.csdn.net/AkieMo/article/details/132163802</link><guid>https://blog.csdn.net/AkieMo/article/details/132163802</guid><author>AkieMo</author><pubDate>Tue, 08 Aug 2023 11:46:21 +0800</pubDate><description><![CDATA[function包装器的使用格式给你一个字符串数组tokens，表示一个根据表示的算术表达式。请你计算该表达式。返回一个表示表达式值的整数。'+''-''*''/'"+""-""*""/"逆波兰表达式是一种后缀表达式，所谓后缀就是指算符写在后面。如果用常规方法会有很多但如果引入function代码就会简单很多了用function去接收一个Lambda表达式。]]></description><category></category></item><item><title><![CDATA[【C++】Lambda表达式的使用]]></title><link>https://blog.csdn.net/AkieMo/article/details/132154846</link><guid>https://blog.csdn.net/AkieMo/article/details/132154846</guid><author>AkieMo</author><pubDate>Mon, 07 Aug 2023 21:18:20 +0800</pubDate><description><![CDATA[闭包是指一个函数对象，它包含了函数定义时的环境信息，包括捕获的外部变量。闭包的存在使得lambda函数可以延长外部变量的生命周期，并且可以在函数调用结束后仍然访问这些变量。闭包是一个函数对象，它可以捕获外部作用域中的变量，并在其生命周期内访问和修改这些变量。比如：[=, &a, &b]：以引用传递的方式捕捉变量a和b，值传递方式捕捉其他所有变量 [&，a, this]：值传递方式捕捉变量a和this，引用方式捕捉其他变量。函数对象可以像普通的函数一样被调用，其执行的代码就是lambda表达式中的代码。]]></description><category></category></item><item><title><![CDATA[默认移动构造、默认移动赋值自动生成的条件]]></title><link>https://blog.csdn.net/AkieMo/article/details/132126458</link><guid>https://blog.csdn.net/AkieMo/article/details/132126458</guid><author>AkieMo</author><pubDate>Sun, 06 Aug 2023 00:35:15 +0800</pubDate><description><![CDATA[而在没有自定义移动构造函数/移动赋值函数的情况下，如果该类自定义了拷贝构造函数/赋值运算符或析构函数之一，都只会调用拷贝构造函数/赋值运算符（前提是形参为const T&而不是T&，因为const T&可以兼容右值实参，而T&不能）而不会生成默认移动构造函数。注意即使没有自定义拷贝构造函数/赋值运算符，只自定义了析构函数，也不会生成默认移动构造函数，这是因为自定义析构函数表明该类在析构时可能需要回收内存，如果生成了默认移动构造函数可能会出错（比如同一地址被释放两次的错误）1.没有声明拷贝构造函数。]]></description><category></category></item><item><title><![CDATA[【C++】右值引用]]></title><link>https://blog.csdn.net/AkieMo/article/details/132126405</link><guid>https://blog.csdn.net/AkieMo/article/details/132126405</guid><author>AkieMo</author><pubDate>Sun, 06 Aug 2023 00:23:12 +0800</pubDate><description><![CDATA[C++11对右值进行了严格的区分： C语言中的纯右值，比如：a+b, 100 将亡值。比如：表达式的中间结果、函数按照值的方式进行返回。]]></description><category></category></item><item><title><![CDATA[【C++】万能引用、完美转发]]></title><link>https://blog.csdn.net/AkieMo/article/details/132112766</link><guid>https://blog.csdn.net/AkieMo/article/details/132112766</guid><author>AkieMo</author><pubDate>Fri, 04 Aug 2023 21:38:10 +0800</pubDate><description><![CDATA[虽然写的是&&和右值引用类似，但是它可以接收左值引用和右值引用当传过来的是左值，那么T&&会折叠为T&。这里输出为什么都是左值引用呢？std::move。]]></description><category></category></item><item><title><![CDATA[布隆过滤器]]></title><link>https://blog.csdn.net/AkieMo/article/details/132093088</link><guid>https://blog.csdn.net/AkieMo/article/details/132093088</guid><author>AkieMo</author><pubDate>Thu, 03 Aug 2023 21:47:18 +0800</pubDate><description><![CDATA[由布隆（Burton Howard Bloom）在1970年提出的 一种紧凑型的、比较巧妙的。其实删除要实现的话意义不大，如果实现了删除，布隆过滤器原本的优势就没有了，还不如用哈希表呢。，它是用多个哈希函数，将一个数据映射到位图结构中。为了降低冲突的概率，我们可以把一个值映射到三个位置上去。布隆过滤器就是为了解决位图不能解决的问题。对每一个位置进行一个数量的标记即可。]]></description><category></category></item><item><title><![CDATA[【面试题】位图]]></title><link>https://blog.csdn.net/AkieMo/article/details/132073590</link><guid>https://blog.csdn.net/AkieMo/article/details/132073590</guid><author>AkieMo</author><pubDate>Wed, 02 Aug 2023 23:39:30 +0800</pubDate><description><![CDATA[我们可以用每一个二进制位来记录一个数据，一个int本来只能记录一个数据的，现在可以记录64个数字了，大大减少的空间。将两个二进制序列按位与（&）一下，0&1=0，0&0=0，1&1=1，不会对其他位置的数据造成改变。将两个二进制序列按位或（|）一下，0|1=1，0|0=0，不会对其他位置的数据造成改变。这个其实也简单，开两个位图，然后遍历位图是1 1就代表存在交集，反之没有。读入要查询的数，查看相应bit位是否为1，为1表示存在，为0表示不存在。可以看到，把只出现了一次的数字筛选出来了。]]></description><category></category></item><item><title><![CDATA[哈希表的简单模拟实现]]></title><link>https://blog.csdn.net/AkieMo/article/details/131968980</link><guid>https://blog.csdn.net/AkieMo/article/details/131968980</guid><author>AkieMo</author><pubDate>Thu, 27 Jul 2023 21:32:25 +0800</pubDate><description><![CDATA[哈希表是一种查找效率及其高的算法，最理想的情况下查询的时间复杂度为O(1)。
unordered_map容器通过key访问单个元素要比map快，但它通常在遍历元素子集的范围迭代方面效率较低。]]></description><category></category></item><item><title><![CDATA[在STL源码当中，如何使用一颗红黑树同时实现map和set的？]]></title><link>https://blog.csdn.net/AkieMo/article/details/131920739</link><guid>https://blog.csdn.net/AkieMo/article/details/131920739</guid><author>AkieMo</author><pubDate>Tue, 25 Jul 2023 16:25:19 +0800</pubDate><description><![CDATA[在STL源码当中，如何使用一颗红黑树同时实现map和set的？]]></description><category></category></item><item><title><![CDATA[RB-tree(红黑树)详解]]></title><link>https://blog.csdn.net/AkieMo/article/details/131905842</link><guid>https://blog.csdn.net/AkieMo/article/details/131905842</guid><author>AkieMo</author><pubDate>Mon, 24 Jul 2023 21:55:33 +0800</pubDate><description><![CDATA[红黑树的插入操作

情况一：

具象图：抽象图：具象图：当uncle为空的时候抽象图：具象图：抽象图：
运行结果：]]></description><category></category></item><item><title><![CDATA[C++复习题]]></title><link>https://blog.csdn.net/AkieMo/article/details/131891714</link><guid>https://blog.csdn.net/AkieMo/article/details/131891714</guid><author>AkieMo</author><pubDate>Mon, 24 Jul 2023 10:56:37 +0800</pubDate><description><![CDATA[C++复习题]]></description><category></category></item><item><title><![CDATA[【C++】AVL树的实现及测试]]></title><link>https://blog.csdn.net/AkieMo/article/details/131883149</link><guid>https://blog.csdn.net/AkieMo/article/details/131883149</guid><author>AkieMo</author><pubDate>Sun, 23 Jul 2023 19:30:20 +0800</pubDate><description><![CDATA[AVL树也叫平衡二叉搜索树，通过旋转解决了搜索二叉树的不确定性，让整颗树趋近于一颗满二叉树。
1.左右都是一颗AVL树
2.平衡因子的绝对值不会超过1]]></description><category></category></item><item><title><![CDATA[【C++】仿函数(less)]]></title><link>https://blog.csdn.net/AkieMo/article/details/131817931</link><guid>https://blog.csdn.net/AkieMo/article/details/131817931</guid><author>AkieMo</author><pubDate>Wed, 19 Jul 2023 20:59:02 +0800</pubDate><description><![CDATA[是一个函数对象（即仿函数）或者函数模板，它不需要具体的变量名来执行比较操作。用于指定类型，好让less的模板参数识别类型。对于以上代码一开始存在一点疑问，，于是我跑去看了一下文档对。，这里是告诉编译器，在。代码，真的是边学边忘。当中没有具体的参数，这个类(容器)当中的。再来看之前模拟实现的。]]></description><category></category></item><item><title><![CDATA[热门二叉树面试题]]></title><link>https://blog.csdn.net/AkieMo/article/details/131796509</link><guid>https://blog.csdn.net/AkieMo/article/details/131796509</guid><author>AkieMo</author><pubDate>Tue, 18 Jul 2023 21:12:50 +0800</pubDate><description><![CDATA[和前序、中序遍历一样，先走完左子树，然后判断右子树，假如我只判断右子树是否为空，在走到节点7回到节点2的时候，这时候要去走2->right，很明显，2->right存在，所以4会被加入答案和栈当中，这时候将节点node置为nullptr，就能避开继续走左子树，直接取栈顶的节点4，4没有右子树了，所以节点4又会被加入到栈当中，就会造成死循环。比如下图，前序遍历的第一个节点是3，那么根节点就是3，再去中序遍历找3，以3为界限划分左右子树，9就是左边的，20，15，7算是右边的。]]></description><category></category></item></channel></rss>