
《白话++》第10章 常用小工具
文章平均质量分 61
《白话C++》第10章 STL和boost 学习所做笔记
yanzhenxi
这个作者很懒,什么都没留下…
展开
-
《白话C++》第10章 Page37 10.2.8 比较操作自动推导
”,“大于判断>”,“大于或等于判断>=”和“小于或等于判断<=”。不过正如前面代码注释,使用“<”推出“==”判断,会造成后者性能有所损失(因为变成两次判断),所以STL要求的是为类提供“<”和“==”判断符重载即可,其他的由它来推导出。为类定义对象之间的大小关系判断是很常见的需求,STL为了减少自己写一整套大小关系判断操作符的重载,提供了一套“比较操作自动推导”工具。(1)023行和028行,两个函数声明为“常量成员函数”是必须的,因为参与做大小比较的左右两个对象,往往是常量;这套小工具位于头文件“原创 2024-02-28 23:02:51 · 441 阅读 · 0 评论 -
《白话C++》第10章 Page36 10.2.7 std::ref/cref
这当然是个低级错误,当'&'作用在变量上,是‘取址’操作;作用在类型之后,才表示“引用”。(见同一行代码中的 'int&')。【小提示】:为什么需要“ref”原创 2024-02-28 21:41:46 · 362 阅读 · 0 评论 -
《白话C++》第10章 Page34 10.2.6 std::pair和tuple
想象以下,如果要制造一个“10-tuple”的对象,光写它的类型名称,就有够长的了,所以stl分别提供了make_tuple和make_pair函数,方便我们直接造出一个tuple或pair对象。这段代码编译不能通过,make_pair函数生成的对象类型是 pair<int, double>, 而不是tmp类型, 这就需要学习STL提供的“引用”小工具。map容器可称为“映射表”或“键值对”,它的每一个元素都由两个成员组成,第一个成员作为“KEY”,第二个成员称为“(VALUE)值”。原创 2024-02-28 21:25:38 · 987 阅读 · 0 评论 -
《白话C++》第10章 Page31 10.2.5 Std::any
可以解决这个问题。any的转换(转回原类型)发挥了C++强类型的优点,它会帮你检查类型兼容,如果转换出错,就抛出异常,如果不处理这个异常,程序就直接挂掉。一,是如果让any包装一个指针,则它并不会在其自身生命周期结束时,自动释放所持有的指针,这和STL的容器设计理念一致。C++是一门强类型的语言,意味着一个“数据”的出现,必然要伴随着它有一个确定的类型。面对一个any类型的数据,要得到它原来的类型是什么,这只有靠强大的记忆力了。,然后再new出不同的对象,这其中又有两种做法,一是C语言风格,存储一个“原创 2024-02-28 17:33:41 · 849 阅读 · 0 评论 -
《白话C++》第10章 Page25 10.2.4 命令行参数(未完成)
得到的参数保存在argv数组中,argc是切分后的个数,但是固定包含程序的名称,所以如果argc是5,则argv的元素也是5,但实际从命令行传入的参数是4个,按次序存储在argv[1]~argv[4]中,而argv[0]则是程序的名称(包含路径)。一个命令行参数都不传,但argc固定位1,而屏幕输出argv[0]的内容,正是程序的完整路径文件名。参数被传入时,全部变成字符串对待,使用空格切分,但如果。运行后,输出个数是6个,分别是。多个子串使用一对双引号扩住。,则只当成一个参数。原创 2024-02-28 15:01:37 · 382 阅读 · 0 评论 -
《白话C++》第10章 Page24 10.2.3 boost::UUID
换句话,就是一个(理论上)在全球空间和整个人类史的时间范围内,都不重复的字符串。,即128位0,通常用于表示一个无效的UUID,类似C++中的nullptr值对应空指针变量。它可长可短,为了在“不重复”这件事上更有保障,通常使用128位数,采用十六进制表达(这样可以看起来短一点)一,利用网卡号的唯一性来辅助生成(boost暂未提供),另外一种方法就是使用随机数。首先查看上例的输出效果,然后使用C++11的随机功能,模拟产生UUID字符串。函数实现uuid到字符串(或宽字符串)的转换。原创 2024-02-28 13:27:46 · 369 阅读 · 0 评论 -
《白话C++》第10章 Page20 10.2.2 随机数
播种之后,C运行库就会依据该种子的指,生成一系列的数值,而后程序第一次调用rand(),就得到该系列中的第一个数,第二次调用就得到系列中的第二个数……“熵”指系统整体熵的信息混乱度,比如内存剩余多少,当前有几个进程,磁盘上最后一次读出的内容是什么,键盘刚刚哪个键被按下等等的变化数据,以某种算法计算出一个随机种子。这除非有个硬件设备,比如可以采集周边光线、噪声、WIFI强度、微博头条等等随机数据,以便在每次运行时,生成一个真正的随机数,否则软件模拟的结果,“伪随机”就是“伪随机”更多解释请上网查阅“。原创 2024-02-28 11:25:40 · 899 阅读 · 0 评论 -
《白话C++》第10章 Page18 10.2.1 non-copyable不可复制类
相比为每个不需要复制功能的类写下复制构造和赋值操作的“delete”声明,来自boost的noncopyable可以让我们写更少的代码,并且在语义上,“noncopyable”这个词表一更加清楚。不过,如果因此引入boost库,可能会感觉代价有点答,为什么不直接学着实现一个呢?从boost::noncopyable派生,只是为了让当前类拥有基类中已“私有化”的,或已声明为“被删除”的复制构造和赋值操作符重载,所以非常适合使用“私有派生”方式。“面向对象”章节为了让某类对象不可被复制,方法是将其。原创 2024-02-28 07:53:55 · 372 阅读 · 0 评论