自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(29)
  • 收藏
  • 关注

原创 被GNU开源项目flex所使用的扩展正则表达式

文章来自对GNU flex官方文档第6部分的翻译和整理。

2023-08-16 18:34:18 215

原创 基于gcc的动/静态库用法简析

前言本文浅析gcc在构建多个的项目,使用了静态链接库,动态链接库的项目中,各个编译参数的含义和常见用法。

2022-04-16 13:18:47 562

原创 C++ Primer Plus学习笔记-第十七章:输入,输出和文件

第十七章:输入,输出和文件显而易见,本章的主要内容是和文件相关的数据操作;实际上关于文件系统,操作系统提供了相应的接口,并且很多本质上不是文件的系统也被抽象为文件,比如鼠标键盘打印机等,这种“万物皆文件”的封装方法实际上已经有一段历史了,不过本章的研究中心并不在这个方向,我们关心的是如何操作成品文件,如何读写,如何在屏幕上显示信息,如何从键盘获得输入等;1.C++输入和输出概述C++中有两个头文件:<\iostream\>和\<fstream\>;在这门语言中,输入和输出都被抽

2021-04-25 23:12:06 605

原创 C++ Primer plus学习笔记-第十六章:string类和标准模板库

第十六章:string类和标准模板库前言:这一章已经相当靠近全书的后面部分了;这一章我们会深入探讨一些技术上的细节,比如string的具体构造函数,比如适用于string类的几个函数,比如我们还会介绍一下标准模板库STL的一些细节;后面还会涉及智能指针的具体实现方式,总之这一章将会对细节有相当程度的深入;1.string类这个类是头文件string支持的,实际上是模板basic_string<char>的一个具体化,同时省略了和内存管理相关的参数,下面让我们看看string类的七个构造

2021-04-19 15:56:28 381

原创 《算法图解》读书笔记-10

第七章:其他算法这里还有一些零碎的优秀算法,但是不好划分到前面的章节中,因此这里就集中归类在一起;1.欧几里得算法这个算法是用来求两个数的最大公约数的;比如将第一个数设置为a,第二个数设置为b,具体的逻辑是:求a%b的值,如果这个值不是0,则将b赋值给a,将这个值赋值给b,继续下一个循环如果a%b的值为0,那么b就是两个数的最大公约数2.素性测试这是个很有意思的算法,作用是判断某个大数是质数的可能性大不大;这个测试基于这样一个事实:xy%y=xx^y\%y=xxy%y=x其中,y是质数

2021-04-11 00:32:17 141 2

原创 《算法图解》读书笔记-09

第六章:聚类顾名思义,聚类就是把一堆数据分成一簇一簇的类;k-means算法这是一种用于聚类的算法,需要在聚类之前率先确定数据需要分成多少簇,不同的簇数会导致不同的结果,因此使用者也需要选择合适的簇数量;这是原数据在图上的位置:让我们大概选择三个重心:算法计算每个元素到最近重心的距离,将每个元素划分近离自己最近的簇中:重新计算同簇元素的重心,将重心移动到计算出来的重心:计算中…最后重心会固定在一个地方不再移动,这时聚类完成;需要注意的是:重心的初始位置不同,聚类的结果也是不同

2021-04-10 20:39:41 163

原创 《算法图解》读书笔记-08

7.迪菲-赫尔曼密钥交换这是一种所有交换都公开,但仍然安全可靠的密钥交换方式;具体而言。它倚仗这样一种“混合密钥的算法”,特点有:算法可以将两种密钥混合,生成和原来的密钥毫不相关的新密钥新密钥的特性只由构成参与运算的密钥决定,也就是说把三种密钥运算为一个新密钥时,即使顺序不同结果也是相同的;#mermaid-svg-zl0mzF9iopcPGl56 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermai

2021-04-10 20:17:44 84

原创 《算法图解》读书笔记-07

第五章:安全算法这一章节主要讨论的是计算机在网络通信中的安全问题,为了保障你的信息不被各种各样居心叵测的人获取,计算机领域的科学家们提出了很多富有创意并且强大稳定的算法;安全和算法首先让我们明确四个概念:窃听:A向B传输数据时被C意外获取假冒:A向B传输数据时C谎称自己是A向B发送信息篡改:A向B发送了一条消息,但这条消息被C拦截并修改后重新发给B(人为攻击和设备故障都可能引起篡改)事后否认:A向B发送了消息,但B收到消息后A不承认消息是自己发给B的这是不同问题的解决方案:问

2021-04-10 17:35:51 108

原创 《算法图解》读书笔记-06

A*算法这也是一个寻路算法,但不同点的是这个算法考虑了物理位置上节点和终点的距离;比如在前面的两种寻路算法中,程序不知道自己是在逐渐远离终点还是逐渐靠近重点;A*算法实现洞察距离变化趋势的机制是:将所在位置和终点的直线距离也作为权重加在节点上;这种算法将节点在物理上和重点的距离作为一个参考值,称为”启发式算法“;这种算法相对来说对性能的需求下降了,同时运行也更快速;因此这种算法很可能正是驱动游戏中怪物自动按最近路径攻击玩家的数学模型;...

2021-04-09 23:59:19 86

原创 《算法图解》读书笔记-05

第四章:图的搜索要研究图的搜索,首先要讲清楚什么是图;你可以理解为:图就是顶点和顶点之间连接的集合;比如全国的铁路线网,我们将车站抽象为顶点,将连接车站的铁路抽象为车站之间的连接,如果有一套寻路算法,我们就能轻松得知从A车站到B车站怎么走最近,同时还能得知要怎么换乘;图中顶点之间的连线是可以有权重的(比如车站之间每条铁路的长度不同),连接也可以是单向的(就像生活中的单行道);根据搜索的策略不同,有广度优先搜索和深度优先搜索;广度优先搜索和深度优先搜索所谓广度优先,和深度优先相反;指的是尽可能同时

2021-04-09 15:07:40 148

原创 《算法图解》-读书笔记-04

第三章:数组的查找前两章我们熟悉了各种各样的数据结构,现在我们来关注从数据中查找元素的方法;线性查找这是最简单枯燥的查找方式,它的逻辑是:检查当前元素是否匹配,不匹配则将视线移动到下一个元素上是的,这样简单的逻辑足够完成查找任务,但它显然不够快;因为如果我们要的数据在数组的最后面,而它只能一个元素检查一次慢悠悠的向后搜索;数据量为n时,时间复杂度为O(n)O(n)O(n)二分查找执行二分查找的前提是整个序列是排序过的;它的查找逻辑是:选出当前序列的中间元素,通过比较大小判断目标元

2021-04-09 11:51:19 75

原创 《算法图解》读书笔记-03

阅读上一篇文章第二章:排序众所周知,纷繁复杂的排序算法是无数面试官折磨毕业生的神奇;现在就让我们来看看各种各样的排序算法吧;

2021-04-08 23:15:09 89

原创 《算法图解》学习笔记-02

6.堆大家在学习C++时应该在书中看到过堆的身影,但当时我们只是认为堆是由new申请的内存空间,不存在自动变量的自动销毁问题,创建和销毁都是软件工程师决定的;现在我们就来看看堆的详细特征;堆是一种图的树形结构,被用于实现“优先队列”(文章后面会提到);优先队列是一种可以自由添加数据的结构,但取出数据时要从最小值开始按顺序取出;堆的特性:每个节点最多有两个子节点,节点的顺序为从上到下,同一行里为从左到右在队中存储数据时必须保证子节点大于父节点,因此新数据会添加在最下面一行靠左的位置,或当本行满时重

2021-04-08 20:38:03 76

原创 《算法图解》学习笔记-01

第一章:算法的基本知识本章的重点是运行时间的计算方法;笼统的来讲,运行时间描述的是数据量线性增长时运行时间的变化规律;我们将运行时间写为:O(表达式)在计算机中每个内存单元都有自己的编号,也就是说在处理器眼中它们是线性且连续排列的;访问某个确定的内存单元时,也可以使用明确的内存地址来具体访问某个单元;链表链表的结构是:#mermaid-svg-H1FOzKCOzsSzziaU .label{font-family:'trebuchet ms', verdana, arial;font-family

2021-04-07 17:25:51 175 3

原创 C++ Primer Plus学习笔记-第十五章:友元,异常和其它

第十五章:友元,异常和其它文章目录第十五章:友元,异常和其它1.友元2.嵌套类3.异常4.RTTI5.类型转换运算符以上为本章所有内容!前言:本章有三个主要内容,分别是友元,异常和其它;本章除了进一步深入剖析友元的使用(不仅仅是友元函数,还包括友元类),还会提供关于异常的处理方式(这对大型程序的稳定性十分重要),另外还会额外讨论一些其它知识;1.友元友元函数可用于扩展类的接口,而友元类的所有方法则都可以使用被友元类的数据成员,包括公有私有保护等所有成员;在一个类中将另一个类声明为友元,只需在一个类

2021-04-07 15:49:47 371

原创 C++ Primer Plus学习笔记-第十四章:C++中的代码重用

第十四章:C++中的代码重用文章目录第十四章:C++中的代码重用1.包含对象成员的类2.私有继承3.多重继承4.类模板前言:本章将讨论包含对象成员的类,模板类和valarray,私有和保护继承,多重继承,虚基类,创建类模板,使用类模板和模板的具体化;另外,本章的所有内容全部都围绕一个核心——C++中的代码重用展开1.包含对象成员的类类中可以包含对象,比如前几章中就有在类对象中包含string类的例子;但现在我们将从实现的角度考虑这一现象;valarray类是由头文件valarray支持的,这个

2021-04-02 00:18:51 205

原创 C++ Primer Plus学习笔记-第十三章:类继承

C++ Primer Plus学习笔记-第十三章:类继承前言:本章主要探讨类继承相关技术细节,在实际进入探讨之前我们需要观察这样一个继承实例:#ifndef TABTENN1_H_#define TABTENN1_H_#include <string>using std::string;class TableTennisPlayer{private: string firstname; string lastname; bool hasTable;public: Ta

2021-03-28 01:53:56 167

原创 C++ Primer Plus学习笔记-第十二章:类和动态内存分配

前言:本章主要阐述对类成员使用动态内存分配的技术细节,并复习前面提到的复制构造函数,赋值运算符,静态类成员,定位new运算符,并动手实现string类;下面这个文件提供了一个不太好的string类实现方式:#include <iostream>#ifndef STRINGBAD_H_#define STRINGBAD_H_class StringBad{private: char * str;//指向字符串的指针 int len;//字符串的长度 static int nu

2021-03-24 13:58:22 178

原创 The C Programming Language 精华版-第一章:导言

前言:The C Programming Language是一部非常经典的作品,它由C语言之父亲笔书写,并凭借本身过硬的质量成为C语言的标准之一本章作为全书的第一章,主要的作用是建立对这门语言的大略认知;程序示例:#include <stdio.h>//包含头文件main()//主函数入口{ printf("Hello,world!");//函数调用}在集成的IDE中你可以使用软件本身执行源文件,但在UNIX系统中你需要这样做才能从一个源文件得到一个可执行文件。也就是我们说的程

2021-03-17 21:06:52 1018

原创 C++ primer plus学习笔记-第十章:对象和类

前言:本章重点阐述对象和类的具体特性和一些实现细节OOP的特性:抽象封装和数据隐藏多态继承代码的可重用性使用OOP编程时,首先从用户的角度考虑对象——描述对象所需的数据以及描述用户与数据交互所需要的操作定义一种数据类型时,不仅仅是分配了内存,还规定了可以对变量执行的操作,具体来说完成了三项工作:决定数据对象需要的内存数量决定如何解释内存中的位决定可使用数据对象执行的操作或方法接口:接口是一个共享框架,供两个系统交互使用;公众是使用类的程序,交互系统由对象组成,而接口由编

2021-03-16 23:01:31 214

原创 C++ Primer Plus学习笔记-第八章:函数探幽

第八章:函数探幽内联函数是C++为提高程序运行速度而做的一项改进,它的原理是:像C语言中的宏替换那样直接将函数代码插入调用它的位置并直接编译,好处是不需要像常规函数调用一样来回切换执行位置,缺点是一个内联函数需要拷贝多个副本;当函数调用相当频繁时使用内联函数效果更明显;使用内联函数的条件:在函数声明前加上关键字inline在函数定义前加上关键字inline注意:内联函数不能递归引用是已定义变量的别名,主要用途是作为被调用函数的形参,这样被调用的函数就可以直接使用原始数据;C和C++使用符号

2021-03-16 19:59:36 206

原创 C++ Primer Plus学习笔记-第七章:函数——C++的编程模块

第七章:函数——C++的编程模块定义函数的基本格式:return-type functioonName(int n){ statement(s); return data;}C++函数不能直接返回数组 ,但可以将数组包含在结构中或作为对象组成部分返回;返回值的实现机制是:函数将返回值写入到指定的CPU寄存器或内存单元中,主调函数会在执行完成后读取写入的数据;如果函数体中有多条返回语句,函数会在执行完第一条返回语句后将使用全返回,编译器会对多条返回语句做出警告;原型描述了函数

2021-03-16 19:56:23 143

原创 C++ Primer Plus学习笔记-第六章:分支语句和逻辑运算符

第六章:分支语句和逻辑运算符if语句的基本格式:if (test-condition) statementif-else语句的通用格式:if (test-condition) statement1else statement2注意:C++不会自动将相同缩进的语句默认为同一个语句块,因此使用if关键字时要学会使用大括号if else if else通用格式:if (test-condition) statement1else if (test-condit

2021-03-16 19:50:29 120

原创 C++ Primer Plus学习笔记-第五章:循环和关系表达式

第五章:循环和关系表达式for循环的基本结构:for(initializationl;test_expression;update_expression) bodyC++常用的方法是:在for和括号之间加上一个空格,而省略函数名和括号之间的空格;C++将赋值表达式的值定义为左侧变量的值;运算符<<的优先级比表达式中的运算符要高;要让cout在显示0和1的时候显示false和true,可以这么做:cout.setf(ios_base::boolalpha);当判定表达式修

2021-03-16 19:47:26 136

原创 C++ Primer Plus学习笔记-第四章:复合类型

第四章:复合类型声明数组:typeName arrayname[arraySize],可以用一个逗号隔开元素的大括号包括的列表初始化数组,可以不指定数组长度编译器会自动计算只有在定义数组的时候才能使用初始化初始化数组时提供的值可以少于数组元素数,未覆盖的元素初始化为0,初始化时可省略等号,列表初始化禁止缩窄转换C风格字符串以’\0’结尾,ASCII码为0cstdlib中的strlen()函数只计算有效字符,空白符和结束符都不计;sizeof算符机械统计数据长度用引号囊括的字符串隐式以’\0’结尾

2021-03-16 19:45:38 134

原创 C++ Primer Plus学习笔记-第三章:处理数据

第三章:处理数据&符号检索变量的内存地址C++命名规则:只能使用字母字符,数字和下划线( _ )名称的第一个字符不能是数字区分大写字符和小写字符不能将C++的关键字用作名称以两个下划线和以下划线和小写字母大打头的名称被保留给实现(编译器及使用的资源)使用,以一个下划线开头的变量名被保留给实现,用作全局标识符;C++对名称没有长度限制,名称中的所有字符都有意义,但某些平台有限制两种长变量名的命名方式:Ⅰ.单词之间用下划线隔开Ⅱ.从第二个单词开始首字母大写short是shor

2021-03-16 19:42:27 149

原创 C++Primer Plus学习笔记-第二章:开始学习C++

第二章:开始学习C++#include<iostream>int main(){ using namespace std; cout<<"come up and c++ me some time."; cout<<endl; cout<<"you won't regret it!"<<endl; return 0;}main()函数是程序的入口,编译器会向程序中添加一段启动代码,操作系统发可以通过

2021-03-16 19:39:22 106

原创 C++ Primer Plus学习笔记-第1章:预备知识

第一章:预备知识C语言是过程性语言,C++在C的基础上添加了面向对象的属性,并且拥有模板支持范式编程;C语言之前的编程称为"意大利面条式编程",C语言首创了结构化编程的先河;最新的C语言标准是C99文件后缀名中,c程序使用小写的c,C++使用大写的C或cpp;...

2021-03-16 19:37:13 108

原创 C++ primer plus 学习笔记-第九章:内存模型和名称空间

第九章:内存模型和名称空间当编写更加庞大的程序时,只使用一个源文件是不够的;为了使程序结构更加清晰,可以使用多个文件来包括源代码;源文件可以组织为:头文件:包含结构声明和使用这些结构的函数的原型源代码文件:包含与结构有关的函数代码源代码文件:包含调用与结构相关的函数代码不要将函数定义和变量声明放在头文件中!这会引来同一个函数被反复包含的问题!头文件通常包含:函数原型使用#define或const定义的符号常量结构声明类声明模板声明内联函数关于#include指令包含文件时

2021-03-14 17:38:46 131 2

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除