<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[L_H_L的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/L_H_L</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; L_H_L]]></copyright><item><title><![CDATA[第6章 线程通信]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/128358060</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/128358060</guid><author>L_H_L</author><pubDate>Sun, 08 Jan 2023 14:37:20 +0800</pubDate><description><![CDATA[信号量实际上就是一个简单的整数,一个进程在信号变成0或者1的情况下推进,并且将信号变为1或0来防止其他进程推进.当进程任务完成后,则将信号再改变为0或1,从而允许其他进程执行。如果要在两个不相关的线程,如两个不同进程里面的线程,之间进行管道通信,则需要使用记名管道.记名管道与文件系统共享一个名字空间.信号就是一个内核对象,或者一个内核数据结构.发送方将该数据结构的内容填写好,并指明该信号的目标进程后,发出特定的软件中断.共享内存就是两个进程共同拥有同一片内存,这片内存中的任何内容,二者均可以访问.]]></description><category></category></item><item><title><![CDATA[13.6-14.8读书笔记]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/128512727</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/128512727</guid><author>L_H_L</author><pubDate>Mon, 02 Jan 2023 22:16:40 +0800</pubDate><description><![CDATA[不同类型可能具有相同的调用形式// 普通函数 int add(int i , int j) {} // lambda,产生一个未命名函数对象类 auto mod = [ ](int i , int j) {} // 函数对象类 struct divide {};// 构建从运算符到函数指针的映射关系,其中函数接受两个int,返回一个int map < string , int(*)(int , int) > binops;但是我们不能将mod或者divide存入binops,因为mod是个。]]></description><category></category></item><item><title><![CDATA[11.1 -11.3章读书笔记]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/128070073</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/128070073</guid><author>L_H_L</author><pubDate>Sun, 27 Nov 2022 21:28:08 +0800</pubDate><description><![CDATA[解释map和set的区别。你如何选择使用哪个？map 是键值对，而 set 只有键没有值。当我需要存储键值对的时候使用 map，而只需要键的时候使用 set。解释set和list 的区别。你如何选择使用哪个？set 是有序不重复集合，底层实现是红黑树，而 list 是无序可重复集合，底层实现是链表。定义一个map，关键字是家庭的姓，值是一个vector，保存家中孩子（们）的名。编写代码，实现添加新的家庭以及向已有家庭中添加新的孩子。= "@q";)= "@q";)]]></description><category></category></item><item><title><![CDATA[9.4-9.6 章读书笔记]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/128063191</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/128063191</guid><author>L_H_L</author><pubDate>Sun, 27 Nov 2022 21:13:42 +0800</pubDate><description><![CDATA[string s(s2, pos2, len2) s是从string s2从下标pos2开始len2字符的拷贝。string s(s2, pos2) s是string s2从下标pos2开始的字符的拷贝。string s(cp, n)   s是指向数组中前n个字符的拷贝。]]></description><category></category></item><item><title><![CDATA[10.1- 10.3读书笔记]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/127839465</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/127839465</guid><author>L_H_L</author><pubDate>Sun, 13 Nov 2022 23:23:53 +0800</pubDate><description><![CDATA[头文件 algorithm 中定义了一个名为 count 的函数，它类似 find， 接受一对迭代器和一个值作为参数。count 返回给定值在序列中出现的次数。编写程序，读取 int 序列存入vector中，打印有多少个元素的值等于给定值。]]></description><category></category></item><item><title><![CDATA[9.1-9.3读书笔记]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/127476596</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/127476596</guid><author>L_H_L</author><pubDate>Sun, 23 Oct 2022 16:39:55 +0800</pubDate><description><![CDATA[对于下面的程序任务，vector、deque和list哪种容器最为适合？解释你的选择的理由。如果没有哪一种容器优于其他容器，也请解释理由。(a) 读取固定数量的单词，将它们按字典序插入到容器中。我们将在下一章中看到，关联容器更适合这个问题。(b) 读取未知数量的单词，总是将单词插入到末尾。删除操作在头部进行。© 从一个文件读取未知数量的整数。将这些数排序，然后将它们打印到标准输出。(a) list ，因为需要频繁的插入操作。(b) deque ，总是在头尾进行插入、删除操作。]]></description><category></category></item><item><title><![CDATA[7.6-8.3读书笔记]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/127345373</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/127345373</guid><author>L_H_L</author><pubDate>Sun, 16 Oct 2022 21:44:27 +0800</pubDate><description><![CDATA[编写函数，接受一个istream&参数，返回值类型也是istream&。完成这些操作后，在返回流之前，对流进行复位，使其处于有效状态。编写函数，以读模式打开一个文件，将其内容读入到一个string的vector中，将每一行作为一个独立的元素存于vector中。与类本身相关，而不是与类的各个对象相关的成员是静态成员。静态成员能用于某些场景，而普通成员不能。如果 badbit、failbit、eofbit 的任一个被置位，那么检测流状态的条件会失败。什么是类的静态成员？静态成员与普通成员有何区别？]]></description><category></category></item><item><title><![CDATA[7.3-7.5读书笔记]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/127161221</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/127161221</guid><author>L_H_L</author><pubDate>Mon, 10 Oct 2022 09:52:14 +0800</pubDate><description><![CDATA[解释下面代码的含义，说明其中的Type和initVal分别使用了哪个定义。如果我们把第256页Screen类的pos的typedef放在类的最后一行会发生什么情况？类型名的定义通常出现在类的开始处，这样就能确保所有使用该类型的成员都出现在类名的定义之后。如果成员使用了外层作用域中的某个名字，而该名字代表一种类型，则类不能在之后重新定义该名字。定义一对类X 和Y，其中X 包含一个指向 Y 的指针，而Y 包含一个类型为 X 的对象。下面的初始值是错误的，请找出问题所在并尝试修改它。]]></description><category></category></item><item><title><![CDATA[6.7-7.2 读书笔记]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/127044439</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/127044439</guid><author>L_H_L</author><pubDate>Sun, 25 Sep 2022 22:36:40 +0800</pubDate><description><![CDATA[为什么read函数将其Sales_data参数定义成普通的引用，而print函数将其参数定义成常量引用？因为read函数会改变对象的内容，而print函数不会。在下面这条if语句中，条件部分的作用是什么？read 函数的返回值是 istream 对象，if语句中条件部分的作用是从输入流中读取数据给两个data对象。编写一个构造函数，令其用我们提供的类内初始值显式地初始化成员。]]></description><category></category></item><item><title><![CDATA[2.1 被隐藏了的过程]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/127039250</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/127039250</guid><author>L_H_L</author><pubDate>Sun, 25 Sep 2022 16:30:40 +0800</pubDate><description><![CDATA[上述分解为四个步骤。]]></description><category></category></item><item><title><![CDATA[5.5-6.2读书笔记]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/126824280</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/126824280</guid><author>L_H_L</author><pubDate>Mon, 12 Sep 2022 22:53:57 +0800</pubDate><description><![CDATA[实参是函数调用的实际值，是形参的初始值。应该改为下面这样：




6.1 参数传递



void f(T) 的参数通过值传递，在函数中 T 是实参的副本，改变T不会影响到原来的实参。
void f(&T) 的参数通过引用传递，在函数中的T是实参的引用，T的改变也就是实参的改变。、

因为字符串可能很长，因此使用引用避免拷贝；而在函数中我们不希望改变 s 的内容，所以令 s 为常量。
occurs 是要传到函数外部的变量，所以使用引用，occurs 的值会改变，所以是普通引用。
因为我们只需要 c 的值，]]></description><category></category></item><item><title><![CDATA[4.1-4.12读书笔记]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/126575686</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/126575686</guid><author>L_H_L</author><pubDate>Sun, 28 Aug 2022 22:51:38 +0800</pubDate><description><![CDATA[如果 someValue的值为真，x 和 y 的值都自增并返回 y 值，然后丢弃 y 值，y递减并返回 y 值。如果一台机器上 int 占 32 位、char 占8位，用的是 Latin-1 字符集，其中字符’q’ 的二进制形式是 01110001，那么表达式’q’ ...]]></description><category></category></item><item><title><![CDATA[1.5 内存不够怎么办]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/126569521</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/126569521</guid><author>L_H_L</author><pubDate>Sun, 28 Aug 2022 14:50:52 +0800</pubDate><description><![CDATA[把地址空间人为地等分成固定大小的页,每一页由硬件决定,或者硬件支持多种大小的页。思路是把一段与程序所需要的内存空间大小的虚拟空间映射到某个地址空间。]]></description><category></category></item><item><title><![CDATA[3.1-3.3 读书笔记]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/126218481</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/126218481</guid><author>L_H_L</author><pubDate>Sun, 07 Aug 2022 22:36:53 +0800</pubDate><description><![CDATA[要根据for循环中的代码来看是否合法，c是string 对象中字符的引用，s是常量。因此如果for循环中的代码重新给c赋值就会非法，如果不改变c的值，那么合法。(1)string:类似 is >> s 的读取，string对象会忽略开头的空白并从第一个真正的字符开始，直到遇见下一空白为止。下列vector对象的定义有不正确的吗？对于不正确的，说明其错误的原因。如果想定义一个含有10个元素的vector对象，所有元素的值都是42，请例举三种不同的实现方法，哪种方式更好呢？如果合法，c的类型是什么？...]]></description><category></category></item><item><title><![CDATA[第2章 变量和基本类型读书笔记]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/126091953</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/126091953</guid><author>L_H_L</author><pubDate>Mon, 01 Aug 2022 09:03:18 +0800</pubDate><description><![CDATA[解释下列定义的含义，对于非法的定义，请说明错在何处并将其改正。(a)std(a)应该先定义再使用。std(b)用列表初始化内置类型的变量时，如果存在丢失信息的风险，则编译器将报错。©在这里wage是未定义的，应该在此之前将其定义。(d)不报错，但是小数部分会被截断。下列变量的初值分别是什么？stdintmain(){std}这里是引用global_int是全局变量，所以初值为0。......]]></description><category></category></item><item><title><![CDATA[4.2 Virtual Member Functions]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/125944462</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/125944462</guid><author>L_H_L</author><pubDate>Sat, 23 Jul 2022 14:44:21 +0800</pubDate><description><![CDATA[一般实现模型每个class有一个virtualtable,内含该class之中有作用的的地址,然后每个object有一个vptr,指向所在；下图为Point的内存布局和其。]]></description><category></category></item><item><title><![CDATA[4.1 Member的各种调用方式]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/125470721</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/125470721</guid><author>L_H_L</author><pubDate>Sun, 17 Jul 2022 15:59:15 +0800</pubDate><description><![CDATA[不应该带来什么额外负担，因为编译器内部已经将“member函数实例”转换为对等的“nonmember函数实例”，通过"namemanglin",都可以绝对清楚指出来。为什么编译器要这么做？]]></description><category></category></item><item><title><![CDATA[3.2:Data Member的布局 && 3.3:Data member的存取]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/125122380</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/125122380</guid><author>L_H_L</author><pubDate>Sun, 05 Jun 2022 14:38:54 +0800</pubDate><description><![CDATA[考虑如下代码:
在中排列顺序將和被声明的顺序一样,任何中间介入的都不会放进对象布局之中；存放在中考虑如下代码:

每一个只有一个实体,存在在程序的之中,每次程序调用,就会被内部转化为对该唯一的实体直接操作,例如:
从指令执行观点来看,这是C++语言中"通过一个指针和通过一个对象来获取member",结论完全相同的唯一一种情况；直接存放在每一个之中,只要程序员在一个中直接处理一个,所谓就会发生
表面上看到对于的直接存取,事实上是经由一个(this指针)完成的...]]></description><category></category></item><item><title><![CDATA[3.1 Data Member的绑定]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/124896074</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/124896074</guid><author>L_H_L</author><pubDate>Sun, 22 May 2022 14:42:05 +0800</pubDate><description><![CDATA[考虑如下代码：
extern float x = 6.66;

class Point3d {
public:
    float X()  {return x;}
private:
    float x, y, z;
};

Point3d::X() 传回来的是Point3d内部的x; 而在早期的的C++编译器上，该操作会指向global x object！并因此导出早期C++的两种防御性程序设计风格：

把所有的	data members放在class的声明起头处，以保证正确的绑定

class Po]]></description><category></category></item><item><title><![CDATA[Data语意学]]></title><link>https://blog.youkuaiyun.com/L_H_L/article/details/124852623</link><guid>https://blog.youkuaiyun.com/L_H_L/article/details/124852623</guid><author>L_H_L</author><pubDate>Sat, 21 May 2022 11:17:17 +0800</pubDate><description><![CDATA[考虑如下代码:
class X{};
class Y : public virtual X{};
class Z : public virtual X{};
class A : public Y, public Z{};

cout &lt;&lt; sizeof(X) &lt;&lt; sizeof(Z) &lt;&lt; sizeof(Y) &lt;&lt; sizeof(A) ;

结果为:1 8 8 16；
class X{};并不是空的,它有一个隐藏的1byte大小,那是被编译器安插进去的一个ch]]></description><category></category></item></channel></rss>