C++
qilimi-1
呵呵呵呵
展开
-
C++ 宏日志输出
直接代码:#define my_printf_tag(format, ...) \do{ \ if(tag_debug == 1){\ time_t time_val=time(NULL);\ char* ctr = ctime(&time_val);\ ctr[24] = '\0';\ printf("%s : %s : %d D:"#format " \n", ctr, tag, __LINE__, ##__VA_ARG原创 2020-08-21 12:50:16 · 500 阅读 · 0 评论 -
红黑树
~~~~ 资源来自维基百科,这里算记录地址 ~~~~ 说道epoll,就会说道mmap和红黑树,这里记录下红黑树,学习红黑树之前需要先了解二叉搜索树。介绍 ~~~...原创 2020-01-03 18:12:19 · 155 阅读 · 0 评论 -
socket epoll通讯
~~~~ 说道epoll就要说道和select的比较了,这是比较常见的面试题目了。 ~~~~ 先介绍epoll:epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口...原创 2020-01-02 12:00:07 · 150 阅读 · 0 评论 -
高斯平滑
结果原创 2019-12-02 14:23:07 · 241 阅读 · 0 评论 -
二叉树遍历递归和非递归实现
遍历一共有三种,前序中序后序原创 2019-11-22 14:31:27 · 109 阅读 · 0 评论 -
线程和进程的区别,线程如何实现同步和通信,进程如何实现通信
线程和进程的区别进程是系统资源分配最小的单位。线程是程序执行最小的单位进程有自己独立地址空间,每启动一个进程,系统都会为它分配地址空间,建立数据表来维护代码段、堆栈和数据块,这种操作非常昂贵。线程是共享进程中的数据的,使用相同的地址空间,因此cpu切换到一个线程花费远比进程要小很多,同时创建一个线程的开销也比进程要小很多。进程间的通讯较为复杂,使用:无名管道、有名管道、信号、共...原创 2019-11-21 20:14:13 · 222 阅读 · 0 评论 -
什么是虚函数
什么是虚函数在某基类中生命为virtual并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual函数返回类型 函数名(参数列表){函数体}实现多态性,通过指向派生类的基类指针或引用,访问派生类中的同名覆盖函数。虚函数的创建继承虚函数继承是解决多态性的,当用基类指针指向派生类对象的时候,基类指针调用虚函数的时候会自动调用派生类的虚函数,这就是多态性,也叫动态编联。演示,...原创 2019-11-20 19:33:27 · 2523 阅读 · 0 评论 -
const(常量)和#define(宏定义)区别
记录面试题编译器处理不同宏定义是一个编译时的概念,在预处理阶段展开,在编译时把所有的宏定义值得地方用宏定义常量替换,不能对宏定义进行调试,生命周期结束于编译时期;const常量是一个运行是的概念,在程序运行时使用,类似一个只读数据块。存储方式不同宏定义是直接替换,不会分配内存,存储在代码段中;const常量需要进行内存分配。...原创 2019-11-20 19:00:28 · 303 阅读 · 0 评论 -
关键字static
关键字staticstatic的作用隐藏保持变量内容持久初始化为0C++类成员声明static的作用关于static的作用简单来说就是四个:隐藏保持变量内容的持久初始化为0C++类成员声明隐藏个人认为最重要的,也是最常用的,应该是隐藏,我的理解的限制使用范围,在一个cpp中,定义的一个全局变量或者函数,不希望其他cpp使用的时候,就可以加static,就不用担心命名冲突了。保...原创 2019-11-20 18:33:18 · 125 阅读 · 0 评论 -
灰度图转bmp文件 C++
直接上代码,根据不同需求可以进行改动#include <stdio.h>#include <iostream>using namespace std;///////////////////////////////////////////////////////////////////////////读写图像文件的结构和函数的定义////////////...原创 2019-04-19 09:54:19 · 1196 阅读 · 0 评论 -
内存分配器 SGI alloca分析
~~~~ 之前我们了解了一些基础的东西,我们下面来学习一下stl里面的经典,我们只要学习SGI,关于源码,后面整理上传到gihub吧。 ~~~~ 我们先看看SGI的对于内存的配置和释放的设计哲学:向syste...原创 2019-04-18 14:24:49 · 222 阅读 · 0 评论 -
C++ 模板
~~~~ 模板(Template)指C++程序设计语言中的函数模板与类模板[1],是一种参数化类型机制,大体对应于java和C#中的泛型,但也有一些功能上的显著差异(C++模板支持后两者没有明确对应的模板模板参数和模板非类型参数,但不支持Java的通配符以及C#的泛型类型约束)。模板是C++的泛型编程中不...原创 2019-03-27 17:22:18 · 137 阅读 · 0 评论 -
C++ 字符串 string
[TOP]&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;~~~~&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;串,也称为字符串,在计算机上的非数据处理的对象基本都是字符串数据。介绍&amp;nbsp;&amp;nbsp;&amp;nbsp;&a原创 2019-03-28 09:06:56 · 245 阅读 · 0 评论 -
C++ 分配器 allocator
在C++编程中,分配器(英语:allocator)是C++标准库的重要组成部分。C++的库中定义了多种被统称为“容器”的数据结构(如链表、集合等),这些容器的共同特征之一,就是其大小可以在程序的运行时改变;为了实现这一点,进行动态内存分配就显得尤为必要,在此分配器就用于处理容器对内存的分配与释放请求。换句话说,分配器用于封装标准模板库(STL)容器在内存管理上的低层细节。默认情况下,C++标准库使...原创 2019-03-28 11:11:52 · 3775 阅读 · 0 评论 -
C++ 堆栈 stack
[TOP] ~~~~ 栈和队列是两种重要的线性结构,是很常用的数据结构。从数据结构的角度看,栈和队列也是线性结构,其特殊性在于栈和队列的基本操作是线性表操作的子集,它们是操作受限的线性表,因此,可称为限定性的数据结构。但是从数据类型角度看,它们是和线性表大不相同的两类重要的抽象数据类型。由于它们广泛应用...原创 2019-11-22 11:08:34 · 517 阅读 · 0 评论 -
设计一个简单地内存分配器(空间分配器)
~~~~ 前面我们简单地看了关于allocator的一些信息,这里我们需要写一个简单地内存分配器原创 2019-04-02 16:48:48 · 844 阅读 · 0 评论 -
关于C和C++
这里我想到了之前的一篇文章,作者是nanomsg的开发者,https://www.oschina.net/question/54100_54164。这是翻译的可以去看一下,对于底层库,跟人更喜欢C,对于运行的程序,更喜欢C++吧。...原创 2019-04-17 11:13:07 · 127 阅读 · 0 评论 -
十字链表
~~~~ 有需求才有供应,很多东西,都是为了解决实际问题才出现的,项目中出现了很多稀疏矩阵,而且需要对他们进行运算,而十字链表就是为了解决稀疏矩阵而出现的一种数据结构。稀疏矩阵 ~~~~ 稀疏矩阵(英语:spa...原创 2019-04-26 11:26:29 · 9457 阅读 · 2 评论 -
理解C++ new-handler机制
~~~~ 当 operator new 不能满足一个内存分配请求时,它在抛出一个 exception(std::bad_alloc异常)之前,会先去调用用户指定的函数:error-handling function(错误处理函数)。这并不完全确切,operator new 真正做的事情比这个稍微复杂一些。...原创 2019-04-17 18:05:43 · 3071 阅读 · 2 评论 -
关于右值引用 C++11
~~~~ 今天看了一遍C++11新特性,看到了右值引用,然后做测试,确突然发现和书上说得不一样,感觉就像是g++,对类临时变量拷贝做了优化,洗面是代码加编译结果,求大佬指导。#include <iostream>#include <stdio.h>using namespa...原创 2019-04-04 15:51:48 · 101 阅读 · 0 评论