C++
文章平均质量分 58
soulsoul_god
慢一点,当你理解的越多,需要记得就越少。
展开
-
纯虚函数的概念
纯虚函数:一种特殊的虚函数。写法:virtual 函数类型 函数名(参数列表) = 0; //纯虚函数作用:在基类中无法对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类去实现。相当于上层基类声明好接口,下层子类根据特性对接口进行实现。实现代码:#include <iostream>using namespace std;class A...原创 2018-09-24 20:05:16 · 5928 阅读 · 0 评论 -
红黑树的简单了解
参考:https://www.sohu.com/a/201923614_466939 (漫画算法,什么是红黑树?)https://blog.csdn.net/sun_tttt/article/details/65445754 (最容易懂得红黑树) 红黑树是一个平衡二叉树。二叉查找树(BST)具备什么特性?左子树上所有节点的值小于或等于它的根节点的值 右子树上所有节点的值均...转载 2018-11-15 16:39:53 · 162 阅读 · 0 评论 -
初识孤儿进程与僵尸进程
子进程是通过父进程创建的,子进程再创建新的进程。子进程的结束和父进程的运行是一个异步过程,即父进程永远也无法预测子进程到底什么时候结束。当一个进程完成它的工作终止之后,它的父进程需要调用wait()或者waitpid()系统调用取得子进程的终止状态。 孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init(进程号为1)所收养,并由ini...转载 2018-11-18 17:36:44 · 139 阅读 · 0 评论 -
boost_lexical_cast使用
boost::lexical_cast:用于类型转换,将string转为整形,或者整形转为string类型头文件:#include <boost/lexical_cast.hpp>参考代码:#include <iostream>#include <string>#include <boost/lexical_cast.hpp...原创 2018-12-12 17:14:47 · 203 阅读 · 0 评论 -
boost::split的使用
boost::split:可根据字符或者字符串来切割字符串头文件:#include <boost/algorithm/string.hpp>实例:①根据一个字符进行切割#include <iostream>#include <string>#include <boost/algorithm/string.hpp>u...原创 2018-12-12 21:03:28 · 18222 阅读 · 1 评论 -
C++两个cpp调用静态全局变量与全局变量问题
前提概要:两个cpp文件想操作同一个map对象,第一个cpp中做插入处理,第二个cpp中做查询处理。使用全局变量可以实现,这里记录一下使用静态全局变量时,为什么会出错的问题。aaa.h#include <iostream>#include <map>#include <string>using namespace std;void f_bbb...原创 2018-12-16 21:52:22 · 4171 阅读 · 1 评论 -
C++读写文件
#include <fstream>ofstream //文件写操作,内存写入到存储设备ifstream //文件读操作,存储设备读取到内存中fstream //读写操作,对打开的文件进行读写操作1、打开文件//参数1:操作的文件名//参数2:打开文件的方式//参数3:打开文件的属性//打开文件有如下几种方式:ios::in 为输入(读)...原创 2019-05-16 13:37:23 · 1192 阅读 · 0 评论 -
C++智能指针shared_ptr的初步了解
1、智能指针的作用C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,智能指针的概念,方便管理堆内存。使用普通指针,容易造成堆内存泄露(忘记释放),二次释放,程序发生异常时内存泄露等问题等,使用智能指针能更好的管理堆内存。从较浅的层面看,智能指针是利用了一种叫做RAII(资源获取即初始...原创 2019-05-22 21:20:28 · 178 阅读 · 0 评论 -
C++基础知识整理
const //指针char greeting[] = "hello";char *p1 = greeting; //指针变量,指向字符数组变量const char *p2 = greeting; //指针变量,指向字符数组常量char *const p3 = greeting; //常量指针,指向字符数组变量const char * const p4 = greeti...转载 2019-06-12 16:09:36 · 264 阅读 · 0 评论 -
static功能介绍
static作用主要有以下四点:1、修饰普通变量,变量存储在静态区,只会被初始化一次,默认值为0;2、修饰普通函数,表明函数的作用范围,仅在定义该函数的文件内才能使用。在多人开发项目时,为了防止与他人命名空间里的函数重名,可以将函数定为 static。3、修饰成员变量,该类只保存一个该变量,可以通过类直接访问,在类中声明,在类外初始化。4、修饰成员函数,无需生成对象可以直接访问,s...原创 2019-06-02 10:51:03 · 391 阅读 · 0 评论 -
进程间通信-消息队列
消息队列(Message Queue):是消息的链表,存放在内核中并由消息队列标识符标识优点:可以实现任意进程间的通信,并通过系统调用函数来实现消息发送和接收之间的同步,无需考虑同步问题,方便 缺点:信息的复制需要额外消耗 CPU 的时间,不适宜于信息量大或操作频繁的场合消息队列提供了一个从一个进程向另一个进程发送数据块的方法,每个数据块都可以被认为是有一个类型,接收者接受的数据块可以有不...转载 2019-07-10 21:16:16 · 276 阅读 · 0 评论 -
进程间通信-信号量
1、信号量信号量本质上是一个计数器(不设置全局变量是因为进程间是相互独立的,而这不一定能看到,看到也不能保证++引用计数为原子操作),它和管道不同,它不以传送数据为主要目的,它主要是用来保护共享资源(信号量也属于临界资源),使得资源在一个时刻只有一个进程独享。临界资源:具有排他性的资源临界区:访问临界资源的代码段2、信号量的工作原理由于信号量只能进行两种操作,等待和发...转载 2019-07-06 17:30:17 · 244 阅读 · 0 评论 -
C++deque介绍
deque是一个双向队列,优化了对序列两端元素进行添加和删除操作的基本序列容器。通常由一些独立的区块组成,第一个区块朝某方向发展,最后一个区块朝另一个方向发展。它允许较为快速地随机访问但它不像vector一样把所有对象保存在一个连续的内存块,而是多个连续的内存块。并且在一个映射结构中保存对这些块以及顺序的跟踪。deque的特点:1、支持随机访问,即支持[]以及at(),但是性能没有vect...原创 2018-11-05 21:08:08 · 9392 阅读 · 2 评论 -
C++获取当前时间和时标
头文件#include <time.h>获取时标(从1970-1-1到现在的秒数)time_t t = time(NULL);printf("%ld\n", t);localtime函数原型:localtime是 把从1970-1-1零点零分到当前时间系统所偏移的秒数时间转换为本地时间struct tm *localtime(const time_t ...原创 2018-11-03 15:16:18 · 553 阅读 · 0 评论 -
虚函数的概念
虚函数:在基类中被声明为virtual并在一个或多个派生类中被重新定义的成员函数。虚函数的作用:就是为了实现多态性。多态性就是将接口与实现进行分离,根据指针指向的对象不同,执行不同对象的方法。 下面来看看不是虚函数的方法:#include <iostream>using namespace std;class A{public: void print(...原创 2018-09-24 17:02:30 · 3060 阅读 · 0 评论 -
C++链式操作
参考:https://blog.csdn.net/K346K346/article/details/46943875链式操作:链式操作是利用运算符进行的连续运算(操作),它的特点是一条语句中出现两个或两个以上相同的操作符,如连续的赋值操作、连续的输入操作、连续的输出操作、连续的相加操作等都是链式操作。 类的链式操作:为了实现类的链式操作,操作符的重载必须满足一定的要求:1、...转载 2018-10-01 14:49:38 · 1662 阅读 · 0 评论 -
C++list的用法
list:容器,完成的功能实际上和数据结构中的双向链表是极其相似的,也就是list也具有链表的主要优点:插入、删除操作速度较快。vector : vector和built-in数组类似,拥有一段连续的内存空间,能非常好的支持随即存取,即[]操作符,但由于它的内存空间是连续的,所以在中间进行插入和删除会造成内存块的拷贝,另外,当插入较多的元素后,预留内存空间可能不够,需要重新申请一块足够大的内存...原创 2018-10-12 09:21:35 · 207 阅读 · 0 评论 -
C++map的用法
map:关联容器,提供一对一(第一个为关键字,第二个为关键字的值,关键字只能出现一次)的数据处理能力。关键字:key,对应的值:value;key值唯一。map内部自建一颗红黑树,具有对数据自动排序的功能,所以在map内部所有的数据都是有序的。 头文件:#include <map>map构造函数:map<int, string> mapStrin...原创 2018-10-17 23:04:40 · 366 阅读 · 0 评论 -
C++this指针初步介绍
参考:https://www.cnblogs.com/liushui-sky/p/5802981.htmlC++中经常用到的this指针,指代这个类对象的本身。比如String类,声明了一个对象String myString,myString里的this就是指向myString对象的指针,this就是这个类对象的地址。 this 的使用:一种情况是,在类的非静态成员函数中返回类对象...转载 2018-10-07 14:26:06 · 252 阅读 · 0 评论 -
C++string类的实现
String类的实现:#include <iostream>#include <string.h>using namespace std;class String{public: String(); String(const char *str); String(const String &other); Strin...原创 2018-10-07 16:37:08 · 914 阅读 · 0 评论 -
C++vector用法的初步介绍
vector介绍:1、容器,存放各种类型的对象,能够增加和压缩数据。2、像数组一样,采用连续存储空间来存储数据。可采用下标进行访问,大小是动态改变的。3、本质讲,vector使用动态分配数组来存储它的元素。当新元素插入的时候,这个数组需要被重新分配大小为了增加存储空间。其做法是,分配一个新的数组,然后将全部元素移到这个数组。 头文件:#include <vector...原创 2018-10-07 20:49:39 · 1231 阅读 · 0 评论 -
C++popen用法
开发过程中,为了在一段C++代码中调用另一个C++写的可执行文件,并需要获取可执行文件的返回值,根据返回值进行校验。开发过程当中,发现可执行文件的返回值不太方便获取,于是改成获取可执行文件的打印结果,根据打印结果进行判定,这里用到了popen。 popen:popen() 函数通过创建一个管道,调用 fork 产生一个子进程,执行一个 shell 以运行命令来开启一个进程。这个进程必须...原创 2018-10-28 22:46:58 · 22553 阅读 · 3 评论 -
C++hash_map原理介绍
已经存在map了,为什么还要使用hash_map?答:map内部自建一颗红黑树,具有对数据自动排序的功能,查询效率也是很高,时间复杂度是O(logN),但如果需要频繁的查询,比较的次数多也会成为瓶颈。那有没有办法能够使比较次数降到一到两次呢,hash_map就可以实现。 hash_map原理:hash_map基于哈希表,哈希表的最大优点就是把数据的存储和查询消耗的时间大大降低,几乎...转载 2018-10-21 22:18:33 · 1918 阅读 · 0 评论 -
C++程序编译成动态库
将C++代码编译成动态库,供另一个C++程序调用。 写了个简单的demo,主要是看看流程。首先,目标文件代码,test.h test.cpptest.h:#include <iostream>using namespace std;class Demo{public: Demo( int x); ~Demo(){}; void pri...原创 2018-10-29 16:15:43 · 4829 阅读 · 0 评论 -
C++客户端查询ES
elasticsearch:ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。ES提供的API:https:/...原创 2018-10-29 17:26:38 · 2231 阅读 · 0 评论 -
C/C++程序员必备知识
https://github.com/huihut/interview原创 2019-09-02 19:11:48 · 345 阅读 · 0 评论