- 博客(21)
- 收藏
- 关注
转载 C++11类内static成员变量声明与定义
众所周知,将一个类内的某个成员变量声明为static型,可以使得该类实例化得到的对象实现对象间数据共享。在C++中,通常将一个类的声明写在头文件中,将这个类的具体定义(实现)写在cpp源文件中。因此,就引出了static成员变量的声明与定义问题:1. 如果一个类内成员变量是static的,且需要将之设定为常量(const),那么这个变量声明与初始化均可写在头文件内。...
2019-09-20 11:09:00 1059
转载 C++11通过拷贝构造器拷贝const字段(待解决)
问题梗概如标题所述。在今天实现Token类的时候,遇到的问题。我希望将Token类设定为immutable属性的,这样实现的方式是将这个类内的所有字段均设置为const型,同时每个字段均为public可访问型。类内主要有两个字段:mark(枚举类型,用于标记当前Token对象所代表的具体类型,比如INT,CHAR等);匿名union字段,用于存储mark标记下对应的具体值。...
2019-09-19 22:08:00 1014
转载 macOS 10.14+ 安装LTP
LTP是哈尔滨工业大学(HIT,窝工)出品的一个自然语言处理工具包。其功能包括中文分词(“分词效果好于jieba分词”[引用自学长])、词性标注、实体识别等。 对于macOS来说,现有的版本可能不多,但最新版依旧支持,这一点和Windows用户是一样的。 总体步骤可以参考如下博客:macOS安装pyltp 说实话,上面这篇博客写的有点繁琐,建议全都读一遍,明白各个步...
2019-06-04 22:25:00 323
转载 C++中的可调用对象
在C++中,常常会利用函数来简化程序流程。函数的存在使得C++整体更加“模块化”,因而也使得代码可读性大大提高。 在C++程序中,常常会很灵活地调用函数来实现不同的功能与目的(函数重载、继承多态等等)。在一些情况下,可以传入类似函数一样的可调用对象,使得这一用法更加强大。 下面是简单整理的几种调用方法: 首先,给定一个共同的前提。标准库提供了排序算法来帮助设计者实现...
2019-03-08 23:07:00 286
转载 C++中的随机数
事情的开始是这样的,在大二的时候,写了几种排序算法,为了测试,就要为数组(或者容器)赋予一些随机初值,自然就用到了C/C++中的随机函数。 当时为了调用简单,将随机数赋值的过程写到了一个单独的函数里,这样一来,为数组(或容器)赋值就可以简洁高效。 但是,问题就是,按理来说,每次调用都该得到不同的随机数列,然而事实证明,“接连被赋值的数组”得到的随机数列却是一样的......
2019-03-07 22:05:00 283
转载 C++中函数访问数组的方式
在书写C++代码时,往往为了令代码更加简洁高效、提高代码可读性,会对定义的函数有一些特殊的要求:比如不传递不必要的参数,以此来让函数的参数列表尽可能简短。 当一个函数需要访问一个数组元素时,出于上述原因,往往也希望令传入的参数尽可能的少(至少我是这样...)。 首先,引出一个例子,对于std::vector<typename>来说,往往只需要传递一个参数就足够...
2019-03-06 23:37:00 1055
转载 函数的参数传递方式
在本学期(大三春)“编译系统”上,辛(明影)老师问了这样一个问题: 源程序如下,问函数Produce参数按照“传值调用”、“传地址调用”的最终输出:Produce(x, y, z): y = y + 1; z = z + x;Main(): int a = 2, b = 3; Produce(a+b, a, a);...
2019-03-06 17:01:00 115
转载 C/C++中size_t潜在的问题
在C++中,利用数组下标访问数组元素时,常常将下标类型定义为size_t类型,因为正常来说,数组的下标就是size_t类型。例如这样:for (size_t i = 0; i < container.size(); ++i) 然而具体来说,size_t是一个和机器相关的unsigned类型。重点就在于... size_t是一个unsigned类型的数值类型。因而,在C...
2019-03-01 18:46:00 472
转载 汉字编码方案
由于计算机只能处理数字,因此,当需要用计算机来处理字符(以及字符串)的时候,就要有一种机制来实现字符到数字的转换,这便是字符串的编码。 最开始的时候,计算机只有英文字符,故需要编码的符号比较少。此时用的编码为ASCII编码,其中包括大小写英文字母、数字以及一些符号(如图)。 此时实现这些字符的编码,只需要一个字节就够了(即8位)。但是对于中文来说,需要对汉字进行编码时...
2018-09-03 22:55:00 633
转载 README
如今来看,计算机发展中,最火热的,就是人工智能(Artificial Intelligence, AI),我对于人工智能的理解,就是通过简单的人机交互(对人类而言,即正常的行为举止),让计算机理解人类的意图,并进一步进行反馈,以满足人类对其的相关需求。这个过程说起来很简单,其应用场景也十分广泛,甚至我们每个人都可以在想象中实现这个过程。当然,若想实现人工智能,就需要在很多方面实现突破...
2018-09-03 11:34:00 103
转载 Java中的协变与逆变
Java作为面向对象的典型语言,相比于C++而言,对类的继承和派生有着更简洁的设计(比如单根继承)。 在继承派生的过程中,是符合Liskov替换原则(LSP)的。LSP总结起来,就一句话: 所有引用基类(父类)的地方必须能够透明地使用其子类的对象。 LSP包含四层含义: ① 子类完全拥有父类的方法,且具体子类必须实现父类的抽象方法; ② 子类...
2018-06-22 22:46:00 171
转载 Java的equals方法实现及其细节
判断两个对象是否等价,是OOP编程中常见的需求(下面围绕Java来进行阐述)。 考虑这样几种情况:通过某个特征值来判断两个对象是否“等价”,当这两个对象等价时,判断结果为true,否则结果为false。 当然,这里的“特征值”不会只是简单的“对象引用”,事实上,Object类(Java的“对象世界”的根)中实现的equals方法,就是把“特征值”设定为“对象引用”来进行判...
2018-06-19 16:51:00 199
转载 Java的clone方法效率问题
在Java中,经常会需要新建一个对象,很多情况下,需要这个新建的对象和现有的某个对象保持属性一致。 那么,就有两种方式来实现这个对象的构造: ①通过新建一个对象,为这个对象的属性根据原有对象的属性来进行赋值 ②调用clone方法,来实现实例对象的克隆 对于Java的clone方法,需要注意的就是它实际上是一种“浅克隆”(Shallow Clone),对...
2018-05-24 09:25:00 345
转载 Mac的Terminal中无法使用mvim解决方案
对于每个人来说,都会有特别喜欢的编辑器。对于很多热爱Unix/Linux的人来说,Vim/vi肯定是很熟悉的“编辑利器”了。 当然,对于Mac用户来说,肯定也不乏对Vim狂热的人。庆幸的是,Vim对Mac用户提供了一个独立的应用程序MacVim。 作为一个Unix的衍生系统,macOS自然支持用户与OS通过Shell来交互,因此也就引入了要讨论的问题: 在Mac终端下,输...
2018-05-20 23:52:00 433
转载 SC.Lab3对于Factory的构建过程(from HIT)
Factory设计模式基本就是通过传入指定的参数/或者不传入参数,通过Factory的某个方法(为了避免实例化Factory对象,一般方法为静态static),来获取一个对象。这个是Factory用的比较多的地方。对于Vertex和Edge的Factory来说,通过传入一些构建对象所需的信息来自动创建一个对象,这样也就避免了重复调用Vertex/Edge自身的方法来为Vertex/E...
2018-05-02 20:39:00 199
转载 关于Lab3中对于正则表达式的应用
在这里记录一下关于软件构造课程Lab3中关于正则表达式的应用。 在实验内容中,要求用正则表达式来匹配读入文件的内容,从而取得构建图需要的相关信息。 举个例子,读入的文件(GraphPoetTestFile.txt)内容如下: 先说一下文件内容中的数据格式: ①一定有一行,第一个单词为"GraphType",后面是一个空格、一个'='、一个空格,加上一个"类...
2018-04-30 12:53:00 129
转载 关于Java构造类与对象的思考
简单记录一下Java构造类与对象时的流程以及this和super对于特殊例子的分析。 首先,接着昨天的问题,我做出了几个变形: Pic1.原版: Pic2.去掉了T.foo方法中的this关键字: Pic3.在原版的基础上抹掉了B.foo方法: Pic4.抹掉了原版的B.foo方法,同时去掉了T.foo方法中的this关键字: 这四...
2018-03-23 21:41:00 115
转载 一个Java的小问题
老师今天在讨论群里抛出了一个问题,让大家尝试思考一下他所给的一段代码输出是什么。 其代码如下: class T { void foo() { this.bar(); } void bar() { System.out.println("T.bar"); } public static void main(String args[]) ...
2018-03-22 17:46:00 96
转载 “持有对象”小记
关于《Java编程思想》第十一章“持有对象”一个内容的思考 在书中第244页,提到了这样的一个方法:Collection.shuffle() 方法。其功能是打乱一个 List 中的元素的顺序。 在这一页的下方,举了这样一个例子: 根据这段代码,如果直接来看,可以这样分析: list1引用指向了一个全新的ArrayList,其内容为数组ia的元素...
2018-03-15 00:30:00 67
转载 Git简记
本文从Git的命令入手,根据不同的应用场景,对每个命令都会有简单的说明(若有变化,请以官方说明为主)。 Git初始化: $ git init 本命令会初始化这个Git仓库,通过命令$ ls -a 可以看到多出了一个.git目录(文件夹,以下简称为目录,即以Unix说法为主)。这个.git目录中包含了这个Git仓库中相关Git的信息。 ...
2018-03-12 10:38:00 100
转载 软件构造 Lab1
大二软件构造第一次实验 本人本次实验操作系统:macOS high Sierra 10.13.3 任务一:MagicSquare 对于本任务,主要需要实现两个方法,一个是isLegalMagicSquare方法,一个是generateMagicSquare方法。 首先,是要实现isLegalMagicSquare方法,该方法是根据一个String fi...
2018-03-03 16:42:00 731
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人