
C/C++
文章平均质量分 94
AlphaGQ
握不住的沙,何不随手扬了它
展开
-
进程同步,信号量,互斥变量等说明
1 进程的描述1.1进程的定义和特征1.进程控制块(PCB):为了使参与并发执行的每个程序(含数据)都能独立的运行, 在操作系统中必须为之配置一个专门的数据结构。称之为进程控制块。2.进程的定义: (1)进程是程序的一次执行。 (2)进程是一个程序及其数据在处理机上顺序执行时所发生的活动。 ★(3)进程是具有独立功能的程序在一个数据集合上的运行的过程,它是系统 进行资源调度和分配的一个独立单位。 (4)在引入进程实体之后,我们可...原创 2021-08-28 16:44:42 · 796 阅读 · 0 评论 -
IPC通信技术说明
**IPC通信技术说明**1.进程间通信概述1.1 管道1.2 FIFO1.3 消息队列1.4 共享内存1.5 选型小结1.进程间通信概述进程间通信(IPC,InterProcess Communication)是指在不同进程之间传播或交换信息。IPC的方式通常有管道(包括无名管道和命名管道)、消息队列、信号量、共享存储、Socket、Streams等。下面对常见的的IPC技术进行调研,具体如下:1.1 管道管道:通常指无名管道,是 UNIX 系统IPC最古老的形式。特点:1)它是半双工的原创 2020-12-17 17:09:39 · 1300 阅读 · 0 评论 -
抛出异常的具体实现—附小例子
1、 抛出异常异常表示程序出现错误的信息,例如当除数为0,非法输入,数组下标越界等等,这一个错误但是C++检测不出来,幸运的是硬件会检查出来,在C++中有一个类的层次结构,异常类的基类是exception,在处理不同的异常时C++使用不同的异常类,这些异常类为exception的派生类,内存空间分配错误,就会抛出bad_alloc的异常等。2、 处理异常处理异常都是通过catch块实现原创 2017-03-16 21:50:53 · 900 阅读 · 0 评论 -
C++的顶层const和底层const的理解
博文原地址:http://blog.youkuaiyun.com/qq_19528953/article/details/50922303最近,又一次翻开C++primer,决定仔细研究一下自己以前没搞懂的顶层const和底层const,这次看了后感觉明白了,所以记录下来,以后可以没事翻阅,增加记忆。首先,const是一个限定符,被它修饰的变量的值不能改变。对于一般的变量来说,其实没有顶层const和转载 2017-04-12 20:54:11 · 1527 阅读 · 0 评论 -
boost bind使用指南
bind - boost头文件: boost/bind.hppbind 是一组重载的函数模板.用来向一个函数(或函数对象)绑定某些参数. bind的返回值是一个函数对象.它的源文件太长了. 看不下去. 这里只记下它的用法:9.1 对于普通函数假如有函数 fun() 如下: void fun(int x, int y) { cout转载 2017-05-09 20:23:55 · 331 阅读 · 0 评论 -
C数据结构设计中,表首结点和二叉树根结点的头指针——传指针还是传指针的指针?
在链表中添加节点,为什么AddToTail(ListNode** pHead,int value)的第一个形参是指向节点指针的指针?? 书上的解释如下:第一个参数pHead是一个指向指针的指针,当向一个空链表插入一个节点时,新插入的节点是链表的头指针,此时会改动头指针,因此必须把pHead参数设置为指向指针的指针。 总的来说这样做的目的是为了应对“空链表”的情况原创 2017-06-20 23:02:00 · 1536 阅读 · 0 评论 -
计算机中浮点数的存储方式
参考网址:http://blog.chinaunix.net/uid-28458801-id-3507427.html根据国际标准IEEE 754,任意一个二进制浮点数V可以表示成下面的形式: V = (-1)^s×M×2^E (1)(-1)^s表示符号位,当s=0,V为正数;当s=1,V为负数。 (2)M表示有效数字,大于等于1,小于2。 (3)2^E表示指数位。原创 2017-07-11 20:35:24 · 920 阅读 · 0 评论 -
排序算法的总结(一)
排序算法的总结:冒泡排序,选择排序,快速排序,插入排序,归并排序,堆排序,基数排序,桶排序1、冒泡排序冒泡排序是最简单的排序之一了,其大体思想就是通过与相邻元素的比较和交换来把小的数交换到最前面,或者通过与相邻元素的比较和交换来把大的数交换到最最后面。冒泡排序的时间复杂度为O(n^2)。//冒泡排序templatevoid bubbleSort(T a[], int n){原创 2017-04-15 19:51:02 · 436 阅读 · 0 评论 -
C++中的new和c中的malloc区别
1、new 是c++中的操作符,malloc是c 中的一个函数2、new 不止是分配内存,而且会调用类的构造函数,同理delete会调用类的析构函数,而malloc则只分配内存,不会进行初始化类成员的工作,同样free也不会调用析构函数3、内存泄漏对于malloc或者new都可以检查出来的,区别在于new可以指明是那个文件的那一行,而malloc没有这些信息。4.new可以看成两个动作转载 2017-06-26 23:11:14 · 1591 阅读 · 1 评论 -
程序的步数分析
程序的步数分析定义:一个程序步可以大概的定义为一个语法或者语义上的程序片段,该片断的执行时间独立于实例特征。一个程序步所表示的计算量可能与另一个程序步所表示的计算量不同。例如下面这条语句:Return a+b+c*b;只要它执行的时间独立于所选用的实例特征,也可以把下面的语句看成一个程序步X=y;实例特征就是:例如对n个元素进行排序,它所需要内存的空间大小为n的函数,在这里原创 2017-03-22 20:36:59 · 9248 阅读 · 1 评论 -
时间复杂度频率表实例
例1语句 执行步数 频率 总步数int factorial(int n) 0 0 Theta(0){原创 2017-03-25 22:01:58 · 1011 阅读 · 0 评论 -
[More Effective C++]尽量使用C++风格的类型转换
Item M2:尽量使用C++风格的类型转换1、C不支持一下转换:1)把一个指向const 对象的指针(pointer-to-const-object)转换成指向const 对象的指针(pointer-to-non-const-object);2)把一个指向基类的指针转换成指向子类的指针;2、C++通过引进四个新的类型转换操作符克服了C 风格类型转换的缺点,这四个操作符是:原创 2017-04-10 21:27:38 · 570 阅读 · 0 评论 -
map的用法
1、map简介map是一类关联式容器。Map中的元素是自动按key升序排序;2、map的功能自动建立Key - value的对应。key 和 value是你自己定义的类型。 map中的函数: C++ Maps是一种关联式容器,包含“关键字/值”对 begin() 返回指向map头部的迭代器 clear()原创 2017-03-19 11:28:36 · 836 阅读 · 0 评论 -
std::advance std::distance std::next
1.std::advancedistance的函数声明如下: template constexpr typename std::iterator_traits::difference_type distance( InputIt first, InputIt last ); Returns the number of elements between first a原创 2017-03-19 14:47:34 · 878 阅读 · 0 评论 -
STL中ostream_iterator
ostream_iterator流迭代器有段时间没用流迭代器,写个小例子熟悉一下流迭代器在标准模板库中,他是一个模板。ostream_iteratorT>T类型,就是迭代器读写的类型。 通过这个流迭代器可以把你要输入的写入到指定的流中。 cout是一个标准输出。使用这个迭代器的例子如下:#include#include#includeusing namespa原创 2017-04-06 22:33:54 · 907 阅读 · 0 评论 -
程序分析:最好,最坏和平均操作计数
对于分析一个程序的性能,其中分析操作计数是一个关键的点,下面做一些简单的介绍:对于顺序查找来说,代码如下:int sequentIndexSearch(T a[], int n,const T& x){ //在数组a[]中查找元素x,如果找到返回返回该元素的位置,否则返回-1 int i; for (i = 0; i < n&&a[i] != x;i++) if (i == n)原创 2017-03-21 20:29:07 · 726 阅读 · 0 评论 -
C++中substr函数
Substrsubstr是C++语言函数,主要功能是复制子字符串,要求从指定位置开始,并具有指定的长度。basic_string::substrbasic_string substr(size_type _Off =0,size_type _Count = npos) const;参数_Off所需的子字符串的起始位置。字符串中第一个字符的索引为 0,默认值为0._Cou原创 2017-04-08 23:29:52 · 2096 阅读 · 0 评论 -
程序复杂度估计的表示方法
为了预测程序运行的时间如何锁着实例特征的变化而变化,我们进行简单的估计步数,不必对程序进行准确的操作计数和执行步数,在这里一般采用大O记法,但是Ω记法、Θ记法、小o记号也是很常用的,下面对其做一一分析说明1、大O记法定义:f(n)=O(g(n)),当且仅当存在常数两个正整数c和n0,使得n>n0的时候f(n)≤c*g(n)。表示方法:f(n)=O(g(n))1)例如:f(n)=原创 2017-03-23 23:19:47 · 1403 阅读 · 0 评论 -
[More Effective C++]]指针与引用的区别
Item M1:指针与引用的区别如果你使用一个变量并让它指向一个对象,但是该变量在某些时候也可能不指向任何对象,这时你应该把变量声明为指针,因为这样可以赋空值给该变量。相反,如果变量肯定指向一个对象,例如你的设计不允许变量为空,这时你就可以把变量声明为引用。1、引用肯定会指向一个对象,在 C++里,引用应被初始化。指针没有这样的限制;string& rs; // 错误,引用必须被初始化原创 2017-04-10 20:22:57 · 380 阅读 · 0 评论 -
不能创建抽象基类的对象
转载地址:http://blog.youkuaiyun.com/songshimvp1/article/details/46894439博主:松狮MVP抽象类是一种特殊的类,它是为了抽象和设计的目的为建立的,它处于继承层次结构的较上层。 (1)抽象类的定义: 称带有纯虚函数的类为抽象类。 (2)抽象类的作用: 抽象类的主要作用是将有关的操作作为结转载 2017-02-06 10:53:45 · 827 阅读 · 0 评论