自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 任意进制转换—C++实现

#include<iostream>using namespace std;int main(){ long n = 0; //待转换的数字 int x = 0; //进制 int a = 0; //转换后的单位字符 int m = 0; //转换后的位数 int s[100]; //转换后字符串 cin >> n >> x; while (n!=0)...

2020-05-21 21:19:46 405 1

原创 Linux下C++进程间通信机制

linux下进程间通信的几种主要手段简介:管道(Pipe)及有名管道(namedpipe):管道可用于具有亲缘关系进程间的通信,有名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关系进程间的通信; 信号(Signal):信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程间通信外,进程还可以发送信号给进程本身;linux除了支持Unix早期信号语义函数sigal外,还支持语义符合Posix.1标准的信号函数sigaction(实际上,该函数是基于BS..

2020-05-12 20:23:03 1654

原创 Linux下C++线程间同步机制

线程的最大特点是资源的共享性,linux下提供了多种方式来处理线程同步,最常用的是互斥锁、条件变量和信号量。1)互斥锁(mutex)通过锁机制实现线程间的同步。同一时刻只允许一个线程执行一个关键部分的代码。int pthread_mutex_init(pthread_mutex_t *mutex,const pthread_mutex_attr_t *mutexattr);int pthread_mutex_lock(pthread_mutex *mutex);int pthread_

2020-05-08 19:35:36 515

转载 C++类内存分布

我们来看看编译器是怎么处理类成员内存分布的,特别是在继承、虚函数存在的情况下。我们先用好Visual Studio工具,像下面这样一步一步来:先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内存布局,如果写上/d1 reportSingleClassLayoutXXX(XXX为类名),...

2020-04-27 18:01:39 287

转载 Overload(重载)、Override(覆盖)、Overwrite(重写) 三者区别

Overload(重载):在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数或返回值不同(包括类型、顺序不同),即函数重载。(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不同;(4)virtual关键字可有可无。Override(覆盖):是指派生类函数覆盖基类函数,特征是:(1)不同的范围(分别位于派生类与基类);(2)函数名字相同;(3)...

2019-09-03 21:07:19 581

原创 C++11新特性

1.引入 nullptr如果 NULL 被定义为 ((void*)0),C++ 不允许直接将 void * 隐式转换到其他类型,那么当编译char *ch = NULL时,无法编译通过,因此NULL一般被定义为 0。而这依然会产生问题,将导致了 C++ 中重载特性会发生混乱,为了解决这个问题,引入nullptr。考虑以下:void foo(char *);void foo(in...

2019-08-08 21:08:22 169

原创 C/C++基础

人生短暂,做点记录吧!1、一个空类占内存1个字节。这是为了保证n个连续空类声明时,变量地址有偏移,防止变量覆盖。2、一个类成员 ,当有虚函数时,就存在一个虚函数表的 "指针"(无虚不存在)。3、C和C++都支持结构体,C++的结构体,可以认为是类的一种变体,二者的差异性。类中成员,如果不声明,默认是private,结构体中成员,如果不声明,则默认是public。4、在C++里...

2019-08-07 11:53:59 88

原创 Android Studio问题记录

初步接触Android Studio,简单记录下遇到的各种问题。问题1:Execution failed for task ':app:transformClassesWithInstantRunForDebug'问题原因: InstantRun错误,具体请参考:https://blog.csdn.net/guolin_blog/article/det...

2018-12-29 21:14:02 180

原创 C/C++进程内存分布

一、进程的内存分布图: 二、简单说明:代码区(.text):也称文本段(Text Segment),存放着程序的机器码和只读数据(常量),可执行指令就是从这里取得的。如果可能,系统会安排好相同程序的多个运行实体共享这些实例代码。这个段在内存中一般被标记为只读,任何对该区的写操作都会导致段错误(Segmenta...

2018-10-30 22:54:41 1086

原创 二叉树各种遍历方式(递归与非递归)

二叉树简述 1、第i层至多有2的i-1次方个结点;2、深度为k的二叉树至多有2^(k)-1个结点;3、叶子结点个数为n,双结点个数为m,则 n= m+14、递归遍历方式代码简单,效率低;非递归遍历方式代码较复杂,效率高5、层序遍历需要借助(queue)实现,前、中、后序遍历需借助栈(stack)实现。 节点定义 typedef struct N...

2018-09-16 16:59:51 515

原创 STL 二级空间配置器实现机制

一:简述STL 空间配置器(allocator)中分配内存与构造对象分开,在头文件&lt;memory&gt;定义:1、分配内存由alloc::allocate()负责,内存释放由alloc::deallocate()负责,在&lt;stl_alloc.h&gt;定义。2、构造对象由::construct()负责,对象析构由::destroy()负责,在&lt;stl_construc...

2018-08-22 23:00:41 211

原创 C++继承时权限

C++中类的三种访问权限: 公用(public):访问权限最高;派生类,外部函数,对象也可以直接访问(无论是成员变量还是成员函数)。 私有(private):访问权限最低;只能是该类内部函数互相调用,派生类、外部函数,对象都不能访问。 保护(protect):访问权限中间;该类内部函数、派生类都能访问,外部类、外部函数,对象不能访问。继承时,这样更容易记住: C++中类的的继承方式有:p

2016-07-26 16:47:53 1388

原创 计数排序

                                           计数排序 适用场合:数据范围小,数据集中排序思想:使用数组来统计每个数字出现的次数时间复杂度:O(n);稳定性:稳定代码实现:void count_sort(int *array, int length, int min, int max){    int *count = NULL...

2016-04-22 22:25:20 230

原创 归并排序

归并排序排序思想:(分治思想)先将整个集合进行递归拆分,拆到一个数据的时候开始返回,然后进行合并返回;时间复杂度: o(n * (log n / log 2) )稳定性: 稳定//归并排序接口函数void merge_sort(int *array, int len...

2016-04-22 22:10:05 307

原创 快速排序

快速排序排序思想:1.首先选定一个标志值(一般选第一个)value,比其大的放在右边,比其小的放在左边; 2.再分别递归处理value左边和右边的集和; 3.begin与end相等表示结束...

2016-04-22 21:41:06 222

原创 shell排序

shell 排序(减小缩量排序)稳定性:不稳定排序思想:将多个数据集先进行分组,再对每组集和进行插入排序。(gap表示分的组数目,(gap-1)可表示每组数据的间隔)实现代码://从小到大排序void shell_sort(int *array, int length)...

2016-04-21 22:25:28 321

原创 直接选择排序

选择排序时间复杂度:O(n^2),不稳定。思想:初始情况:有序空间为空,无序空间为整个待排空间。过程:每次从无序空间取出一个最小值和无序空间第一个元素进行交换,然后缩小无序区间,直到无序区间只剩一个元素代码:void select_sort(int *arr...

2016-04-21 22:24:26 204

原创 直接插入排序

直接插入排序排序思想:将一个数据集和看作一个无序区间和一个有序区间。每次从无序区间取出第一个值,插入到有序区间的确定位置 直到无序区间为空。注意:初始状态,将待排序区间的第一个元素作为有序空间,剩下的作为无序区间时间复杂度:O(N^2)代码实现:...

2016-04-21 22:17:02 257

原创 优化的冒泡排序法

一、优化的冒泡排序1、思路:如果说在某次比较过程中,没有发现交换的过程,说明当前的序例已经是排好序的。 flag == 1 表示有交换过程 flag == 0 表示已排序完成2、代码实现:void bubble_sort1(int *array, int length){ int j =...

2016-04-21 22:04:47 454

原创 堆排序

                                                堆排序排序思路:(1)创建一个堆;(借助队列,按层创建)                    (2)交换跟节点和最后一个叶子节点的值,在大堆中排除该叶子节点,再将 剩余的二叉树调整成大根堆;                    (3)重复步骤2,直至二叉树中只有一个节点//实现代码:...

2016-04-21 21:43:13 219

原创 #define,const ,static 的使用总结

static的使用1、全局变量(初始化和未初始化),静态变量(全局和局部) 都在静态区存放,生命周期大于主函数,进程开始时创建,进程结束时回收2、全局变量和静态变量的作用域问题 1)全局变量的作用于就是全局,跟放置位置无关 2)静态全局变量:把修饰的变量的作用与限制在本文件中, 静态局部变量:只初始化一次,以后直接使用,声明周期贯穿整个进程3)...

2016-03-06 21:12:41 378

原创 sizeof,strlen 使用总结

1.sizeof是一种操作符,对变量或者对象可以不加括号,但是类型,必须加括号;2.指针与数组sizeof()使用: (1) 指针也属于一种变量类型(32位操作系统下是4字节,64位操作系统是8字节): 例1:char *p; int length1=sizeof(p) ; // length1=4 或 length1=8;...

2016-03-05 22:21:36 197

空空如也

空空如也

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

TA关注的人

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