研究项目
yisun03
这个作者很懒,什么都没留下…
展开
-
linux命令:批量替换多个文件中的指定字符/字符串/子串
一条命令搞定sed -i "s/原字符串/目标字符串/g" `grep 原字符串 -rl 需要批量替换的文件或文件夹目录`如:在当前目录将原字符串"suffx"(也可以是子串)批量替换为字符串"_kind",如下一行命令即可实现批量替换sed -i "s/suffix/_kind/g" `grep suffx -rl ./`...原创 2021-01-14 15:49:53 · 3756 阅读 · 1 评论 -
c++中截取想要的特定的字符子串
c++中想要对字符串string进行截取字符特定的字符字串,可以结合substr()和一系列的返回索引函数来做。1、substr()函数很好理解,他的原型为://原型1basic strin::substr(string,start,length);//原型2(将string移到外面)string &a,a.substr(start,length);函数功能时返回字符串a从start位置开始的长为length的子串,其中start参数必须提供,参数lmeiyouength为可选原创 2020-06-18 16:48:36 · 10889 阅读 · 0 评论 -
std::vector顺序容器的默认顺序问题
对于顺序容器vector,在一系列的插入元素之后,它里面的元素的顺序会不会被vector重新排列顺序,对于重复插入相同的元素时vector又是怎么处理的。我们用实验说话:上我的代码 std::vector<int> vec_it; std::vector<double> vec_db; for(int i = 3;i < 11; i++) { vec_it.push_back(i%9); // 3,4,5,6,7,8,0,1 vec_原创 2020-06-13 15:57:05 · 3401 阅读 · 0 评论 -
c++子类重写父类的虚函数对返回类型和参数列表的要求
对于c++中的继承,如果子类重写父类的virtual函数,那么子类重写的这个函数的返回类型和参数列表要满足什么要的要求呢?可不可以和父类的那个virtual函数的返回类型或者参数列表不一样呢?下面来实验一下:我设计了三个类:base derived returns他们分别是父类:base,子类:derived,以及用于测试的返回类:returns.他们的结构如下:base.h和base.cpp#include "returns.h"class base{public:原创 2020-06-13 15:21:28 · 5415 阅读 · 1 评论 -
java中BigInteger类的成员函数
大数BigInteger不是基本数据类型之一,它像String一样是Java里的一个类,有如下方法提供:BigInteger abs() 返回大整数的绝对值BigInteger add(BigInteger val) 返回两个大整数的和BigInteger and(BigInteger val) 返回两个大整数的按位与的结果BigInteger andNot(BigInteger val) 返回两个大整数与非的结果BigInteger divide(BigInteger val)...原创 2020-06-12 15:45:31 · 230 阅读 · 0 评论 -
c++实现将实数转化为分子分母都为整数的分数。
real_value* translation_util::real_to_fraction(float num) { //分子. long long nume = 0; //分母. long long denom = 1; bool flag = false; char ch; string str = std::to_string(num); //得到分子分母. for(int i = 0; i < (int)str.l.原创 2020-06-01 12:28:05 · 1245 阅读 · 0 评论 -
c++中子类调用父类方法的方法
在c++中子类调用父类方法的方法和java所用的方式不一样,java使用super指针就可以调用,c++中虽然也有this指针,但是不能用super去调用父类方法。c++用的方法为:fatherClass::fatherFunction().1、java中的方法public Expr visit(BinaryExpr e) { if (isTupleComparison(e)) { if (e.op == BinaryOp.EQUAL) { return equal;原创 2020-05-29 10:49:47 · 7429 阅读 · 0 评论 -
C++ static_cast、dynamic_cast、const_cast和reinterpret_cast(四种类型转换运算符)
为了使潜在风险更加细化,使问题追溯更加方便,使书写格式更加规范,C++ 对类型转换进行了分类,并新增了四个关键字来予以支持,它们分别是:使用格式统一为xxx_cast<new_type>(expr).new_type为目标类型,data为要转的表达式。注意:1、static_cast不能用于无关类型之间的转换,因为无关类型之间的转换是有风险的。比如:int转double可以,但是int* 转 double* 就不行,double转int虽然可以,因为double.原创 2020-05-25 10:42:07 · 286 阅读 · 0 评论 -
c++中的虚函数(virtual)
虚函数是指一个类中你希望重载的成员函数,当你用一个基类指针或引用指向一个继承类对象的时候,你调用一个虚函数,实际调用的是继承类的版本。派生类不能改变virtual现状,基类函数没有virtual的时候派生类不能声明成有,基类有virtual的时候派生类声明不声明都一样.#include<iostream>class base{public: virtual void print1(){std::cout << "基类" << std:.原创 2020-05-22 10:28:00 · 709 阅读 · 0 评论 -
c++中也有java中的匿名内部类
什么是内部类将类写在其他类的内部,可以写在其他类的成员位置或局部位置,这种写在其他类内部的类就称为内部类。其他类也称为外部类。什么时候使用内部类在描述事物时,若一个事物内部还包含其他可能包含的事物,比如在描述汽车时,汽车中还包含有发动机,这时发动机就可以使用内部类来描述。 class 汽车 { //外部类 class 发动机 { //内部类 } }内部类的分类内部类分为成员内部类与局部内部类。我们定义内部类时,就是一个正常定义类的过程...转载 2020-05-21 17:04:09 · 1708 阅读 · 2 评论 -
c++中explicit关键字的介绍
1、C++中的关键字explicit主要是用来修饰类的构造函数,被修饰的构造函数的类,不能发生相应的隐式类型转换,只能以显示的方式进行类型转换。类构造函数默认情况下声明为隐式的即implicit,隐式转换即是可以由单个实参来调用的构造函数定义了一个从形参类型到该类类型的隐式转换。编译器在试图编译某一条语句时,如果某一函数的参数类型不匹配,编译器就会尝试进行隐式转换,如果隐式转换后能正确编译,编译器就会继续执行编译过程,否则报错。2、当类的声明和定义分别在两个文件中时,explicit只能写在在声明中,不原创 2020-05-18 18:38:48 · 347 阅读 · 1 评论 -
c++中std::move()的用法
std::move函数可以以非常简单的方式将左值引用转换为右值引用。通过std::move,可以避免不必要的拷贝操作。std::move是为性能而生。std::move是将对象的状态或者所有权从一个对象转移到另一个对象,只是转移,没有内存的搬迁或者内存拷贝。如string类在赋值或者拷贝构造函数中会声明char数组来存放数据,然后把原string中的 char 数组被析构函数释放,如果a是一个临时变量,则上面的拷贝,析构就是多余的,完全可以把临时变量a中的数据直接 “转移” 到新的变量下面即转载 2020-05-18 18:14:33 · 1280 阅读 · 0 评论 -
一些操作符的含义
要是不知道操作符的含义可以对照一下,但是不同语言会有不一样的,但大多都差不多含义。这是ocaml语言的操作符含义:+整型加法- 整型减法~-或- 整型负* 整型乘法/ 整型除法,若除零则会raise一个Division_by_zeromod 整型同余,若第二个参数为0则会raise一个Division_by_zeroland 整型的逐位逻辑与lor 整型的逐位或lxor 整型的逐位异或lsl 整型的逻辑左移lsr 整型的逻辑右移asr ...原创 2020-05-17 16:25:51 · 422 阅读 · 0 评论 -
c++中如何动态生成变量名
这个问题也困扰了我好久,要是真的去动态的生成x0,x1,x2........是真的不可能。但是会有办法做到相似效果。比如想要做到如下:for(int i = 0; i < _vector.size(); i++) //_vector是一个vector对象{ auto v = _vector.at(i); auto xi = get_name(v); //想要在这个循环中生成x0,x1,x2,x3........}一个最直观最简单的办法就是利用数组。int x[_v原创 2020-05-16 17:46:06 · 7818 阅读 · 3 评论 -
c++中子类和父类的强制转换
只有子类转换成父类,父类不能转换成子类。因为子类是从父类继承而来,子类中包含父类中所有成员。而如果父类可以转换成子类,意味着将子类中将有一部分是未知的成员。这是不被允许的。要是确定父类转换成子类你能保证是正确的,可以用强制转换:子类强制转换为父类用static_cast<>:(a : public A)A * book;a* name;book = static_cast<A*>(name);父类转换为子类用dynamic_cast<>:原创 2020-05-12 09:05:03 · 8920 阅读 · 0 评论 -
ubuntu升级或按安装cmake
可以用sudo apt-get install cmake但是这不能选择版本用以下方法:wget https://cmake.org/files/v3.9/cmake-3.9.2.tar.gztar -xvf cmake-3.9.2.tar.gzcd cmake-3.9.2./configuresudo makesudo make installhash -rcmake --version卸载老版本camke 见链接:https://blog.csdn..原创 2020-05-11 12:54:23 · 778 阅读 · 0 评论 -
ubuntu卸载软件(cmake)
cmake的版本在ubuntu编译程序时至关重要,特别是编译他人的工程时,有时必须保证cmake的版本与工程所有者相同。对于cmake的卸载问题,现在一般博客中给的指导是:sudo apt-get remove cmake但是此句指令是针对于通过sudo apt-get install cmake 安装的用户。如果是从源码安装,以上删除方式则不能成功删除,因此对于源码安装的cmake,博主经过实践,首先到cmake的安装目录下找到install_manifest.txt,txt中保存了所有cmake转载 2020-05-11 12:51:20 · 4216 阅读 · 0 评论 -
ubuntu安装flex和bison(附有flex-2.6.4.tar.gz)
bison可以直接用命令装:sudo apt-get install bisonflex建议用源码装:下载flex-2.6.4.tar.gz后解压:sudo tar -zxvf flex-2.6.4.tar.gz进入解压目录:cd flex-2.6.4再运行命令:./configuremakemake installflex-2.6.4.tar.gz下载链接永久有效提取码: ah24...原创 2020-05-10 13:46:06 · 4493 阅读 · 4 评论 -
c++中string的截取、替换和查找操作
1. 截取子串s.substr(pos, n) 截取s中从pos开始(包括0)的n个字符的子串,并返回s.substr(pos) 截取s中从从pos开始(包括0)到末尾的所有字符的子串,并返回2. 替换子串s.replace(pos, n, s1) 用s1替换s中从pos开始(包括0)的n个字符的子串3. 查找子串s.find(s1) 查找s中第一次出现s1的位置,并返回(包括0)s.rfind(s1) 查找s中最后次出现s1的位置,并返回(包括0)s.find_first...原创 2020-05-09 10:41:39 · 281 阅读 · 0 评论 -
java中map的computeIfAbsent()函数
一、HashMap computeIfAbsent(Key, Function) 的这个方法,是被用来计算给定key,给定映射函数的的值。如果,key之前并没有映射到一个值,或者映射到null,那么,就用计算出来的值放到这个hashmap中。 如果这个映射函数返回null,那么不添加任何k-v对 如果在计算过程中,抛出异常,那么不添加任何k-v对 在计算过程中,无法修改此map 方法会抛出ConcurrentModificationException ,如果在计算过程中,...原创 2020-05-09 09:43:30 · 1762 阅读 · 0 评论 -
c++队列queue的基本操作
back() 返回最后一个元素empty() 如果队列空则返回真front() 返回第一个元素pop() 删除第一个元素push() 在末尾加入一个元素size() 返回队列中元素的个数原创 2020-05-09 09:13:41 · 594 阅读 · 0 评论 -
java中队列queue的阻塞操作
add() 增加一个元索如果队列已满,则抛出一个IIIegaISlabEepeplian异常remove() 移除并返回队列头部的元素如果队列为空,则抛出一个NoSuchElementException异常element() 返回队列头部的元素如果队列为空,则抛出一个NoSuchElementException异常offer() 添加一个元素并返回true如果队列已满,则返回falsep...原创 2020-05-09 09:11:44 · 451 阅读 · 0 评论 -
c++中比较两个std::string对象是否相等
在java中比较两个string对象是否相等可以直接调用函数equals()if(name1.equals(name2)) //name的声明忽略{ print("相等");}而在c++中也很简单,用"=="就可以实现if(name1 == name2){ std::cout<<"相等"<<std::endl;}...原创 2020-05-08 16:15:23 · 10943 阅读 · 0 评论 -
c++中将一个vector对象插入另一个vector中
c++中的vector的插入操作有几个方法:vector.insert(pos,elem); //在pos位置插入一个elem元素的拷贝,返回新数据的位置。vector.insert(pos,n,elem); //在pos位置插入n个elem数据,无返回值。vector.insert(pos,beg,end); //在pos位置插入[beg,end)区间的数据,无返回值...原创 2020-05-05 19:33:39 · 27622 阅读 · 1 评论 -
c++中的tuple(元组)
tuple是c++II里出现的类型,和pair类型类似,但pair类型是限定两个任意类型的变量,tuple更加强大,它可以有任意数量的成员。但是每个确定了的tuple类型的成员数目是确定不变的。1、tuple的用处当需要将多种不同类型的数据凑在一起的时候,我们可以有两个选择,那就是结构体和tuple,而tuple是更加方便的一个选择。下面展示tuple的简单示例:#include...原创 2020-04-28 21:56:02 · 2687 阅读 · 0 评论 -
c++中的map容器的插入操作
1、使用[ ]进行单个插入//头文件#include<map>map<string,int> mp;//可以使用{}对map进行赋值,这是c++II才有的。map<string,int> mp = { {"zhang",1}, {"li",2}, ...原创 2020-04-27 21:55:02 · 1919 阅读 · 0 评论 -
c++中的map和HashMap
一、map1、map成员上面可以看到Map接口的几个实现方式。简要说明:TreeMap是基于树(红黑树)的实现方式,即添加到一个有序列表,在O(log n)的复杂度内通过key值找到value,优点是空间要求低,但在时间上不如HashMap。C++中Map的实现就是基于这种方式HashMap是基于HashCode的实现方式,在查找上要比TreeMap速度快,添加时也没有任何顺序...原创 2020-04-18 17:50:08 · 4272 阅读 · 0 评论 -
java SE 8的流库
流提供了一种让我们可以在比集合更高的概念级别上指定计算的数据视图。通过使用流,我们可以说明想要完成什么任务,而不是说明如何去实现它。我们将操作的调度留给具体实现去解决。例如,假设我们想要计算某个属性的平均值,那么我们就可以指定数据源和该属性,然后,流库就可以对计算进行优化,例如,使用多线程来计算总和与个数,并将结果合并。java SE 8引入的流库是用来以“做什么而非怎么做”的方式处理集合。...原创 2020-04-10 22:24:36 · 225 阅读 · 1 评论 -
c++中的函数指针(指向函数的指针)
1、函数指针基础函数指针指向的是函数而非对象,和其他指针一样,函数指针指向的是某种特定类型。函数的类型由它的返回类型和形参类型共同决定,与函数名无关。例如://比较两个string对象的长度bool lengthCompare(const string &, const string &);该函数的类型是bool(const string &, const...原创 2020-04-08 22:42:32 · 5348 阅读 · 0 评论 -
Stack Overflow requires external JavaScript from another domain, which is blocked or failed to load
Stack Overflow requires external JavaScript from another domain, which is blocked or failed to load错误是由于Stack Overflow引用的一些国外站点的JavaScript库被block了。由于众所周知的原因,只需替换一个域名就可以继续使用Google提供的前端公共库了。 同样,通过scr...转载 2019-12-02 15:07:17 · 351 阅读 · 0 评论 -
枚举类的values()方法
枚举类中的元素是无法通过下标值来访问的,如果你想指定访问枚举类中的某个值,你只能直接写出它们的值,除此之外,别无他法。但是枚举类有一个values()方法,这个方法可以将枚举类转换成一个枚举类型的数组,转换成数组之后我们就可以通过下标来访问我们的枚举类中的值。比如下面的代码:enum Direction { LEFT, RIGHT, UP, DOWN} 这里面有...转载 2019-11-21 18:41:28 · 6004 阅读 · 0 评论 -
endnote安装时出现error1500错误
这是我安装时经历的,说Another installation is in progress,这是因为安装这个之前安装了另一个endnote,在华军下载的,下载速度慢得无敌,木马贼多,下载一会我放弃了,下载的官网的installer,安装时就出现这个情况。我关机,重启都不行,最后网上看到一个解决办法:杀掉msiexec.exe的进程,完美解决...原创 2019-11-17 15:26:33 · 2715 阅读 · 3 评论 -
cmake入门实战
这里转载一篇非常好的关于cmake的博客,讲的特别好,排版什么的也非常喜欢,讲解也很细节,也为了方便自己看,特意转载一下,我就不附原文内容了,怕影响排版,这里给出原文链接,点这里。...转载 2019-11-08 09:12:27 · 202 阅读 · 0 评论 -
CMake官方教程中文翻译
看见一博主翻译的一篇官方cmke教程,觉得很不错就转载并稍作一些细小修改,我提供的3.16版本的文档是最新的,博主之前翻译的是3.7的,内容比3.16少一点点,想看3.16完整内容,下面也有链接。提供的CMake简介CMake是一个跨平台的、开源的构建工具。cmake是makefile的上层工具,它们的目的正是为了产生可移植的makefile,并简化自己动手写makefile时的巨大工作量...转载 2019-11-07 11:26:50 · 5548 阅读 · 0 评论 -
.cc文件和.cpp文件有什么区别
从历史上看,C ++源文件的后缀是.C。第一次将C ++移植到文件名不重要的系统时,这导致了一些问题。不同的用户采用不同的解决方案:.cc, .cpp,.cxx以及其它可能的。今天,在Unix世界之外,它主要是.cpp。Unix似乎.cc更经常使用。...原创 2019-11-07 10:14:22 · 40484 阅读 · 0 评论 -
什么是many-sorted first order logic (many-sorted FOL)
其实是个很好理解的东西,但是感觉中文文献对之的解释少之又少,我没有查到,翻译也翻译为多排序的一阶逻辑,跟不久不准确。对于外文文献倒是有,但是限于英语阅读能力有限,实在是都不太懂什么意思。下面有外文对many-sorted FOL这样解释:如果您能看懂就是最好,我的解释是多类型的一阶逻辑,这里的类型我理解为int,real,bool,float,char等,就是说这个一阶逻辑包含了多个类...原创 2019-11-05 09:30:25 · 492 阅读 · 0 评论 -
ubuntu安装python
1.准备在安装之前,请使用以下命令安装Python的先决条件。两条命令:sudo apt-get install build-essential checkinstallsudo apt-get install libreadline-gplv2-dev libncursesw5-dev libssl-dev \libsqlite3-dev tk-dev libgdbm-dev li...原创 2019-10-27 21:39:45 · 1824 阅读 · 0 评论 -
ubuntu下安装smt solver z3
系统:Ubuntu安装对象:Z3Z3属于SMT Solver安装z3之前需要安装python,python的安装可以看我的另一篇博客:https://blog.csdn.net/weixin_39408343/article/details/102771891这个python安装教程中有我遇到的真实问题以及解决办法,供大家参考。z3安装过程如下:Choice 1...原创 2019-10-27 21:45:00 · 2047 阅读 · 1 评论 -
windows下的makefile:nmake命令
在项目工程中遇到makefile,查了下nmake命令,在博客园看见一篇很好的文章,记录一下。原文地址为:https://www.cnblogs.com/kekec/archive/2013/04/21/3007277.htmlnmake命令(windows下的makefile)1. 如果已经有vc6的dsp工程,可直接导出nmake脚本文件(.mak) “Project -...原创 2019-10-27 15:10:17 · 1277 阅读 · 0 评论 -
Visual Studio 2017 Python 环境配置
自己在安装vs上配置python时引用的一篇博客,原文如下:1.打开 Visual Studio installer2.修改->勾选Python开发3.安装完之后打开VS->新建项目这里也是一个我选择VS作为Python开发平台的原因,它集成了有用的模板,包括机器学习和Web项目4.选择Python应用程序可以在右边看见我们使用的是Py...转载 2019-10-27 14:38:03 · 2502 阅读 · 0 评论