- 博客(21)
- 资源 (9)
- 收藏
- 关注
转载 C++宏定义详解
一、#define的基本用法 #define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能 理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C语言的学习很不利。1 #define命令剖析
2016-01-14 09:59:33
214
转载 C++ typedef用法小结 (※不能不看※)
第一、四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如:char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量;以下则可行:typedef char* PCHAR; // 一般用大写PCHAR pa, pb; // 可行,同时声明了两个指向字符变量的指
2016-01-13 16:31:44
309
转载 C#多线程中子线程快速终止的几个处理办法
因项目需要,采用了多线程方案,其中主线程负责界面处理(如显示数据、与用户交互等),子线程负责读写串口(发送命令、读取数据)。但是,由于使用多线程的经验较少,对于关闭子线程的问题上走了一些弯路,在此留文纪念,希望能帮助遇到此问题的朋友。 因项目需要,采用了多线程方案,其中主线程负责界面处理(如显示数据、与用户交互等),子线程负责读写串口(发送命令、读取数据)。但是,由于使用多线程的经验较少
2015-10-29 11:18:44
10121
1
转载 线程原语:pthread_create(),pthread_self(),pthread_exit(),pthread_join(),pthread_cancel(),pthread_detach(
1 pthread_create()函数创建线程A:依赖的头文件#includeB:函数声明int pthread_create(pthread_t *thread, constpthread_attr_t *attr,void *(*start_routine) (void *), void *arg);pt
2015-10-29 11:08:03
455
转载 二叉树各种遍历
【简介】树形结构是一类重要的非线性数据结构,其中以树和二叉树最为常用。二叉树是每个结点最多有两个子树的有序树。通常子树的根被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用作二叉查找树和二叉堆或是二叉排序树。二叉树的每个结点至多只有二棵子树(不存在度大于2的结点),二叉树的子树有左右之分,次序不能颠倒。二叉树的第i层至多有2
2015-09-07 09:52:47
219
原创 定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。
题目:定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef 左旋转 2 位得到字符串 cdefab。请实现字符串左旋转的函数。要求时间对长度为n 的字符串操作的复杂度为 O(n),辅助内存为O(1)。源码:// ConsoleApplication5.cpp : 定义控制台应用
2015-09-06 15:46:08
853
原创 求子数组的最大和
输入一个整形数组,数组里有正数也有负数。数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。求所有子数组的和的最大值。要求时间复杂度为O(n)。例如输入的数组为1, -2, 3, 10, -4, 7, 2, -5,和最大的子数组为3, 10, -4, 7, 2,因此输出为该子数组的和18。// ConsoleAppli
2015-09-03 17:12:31
205
原创 设计包含min函数的栈
定义栈的数据结构,要求添加一个min 函数,能够得到栈的最小元素。要求函数 min、push以及 pop 的时间复杂度都是 O(1)。源码:// ConsoleApplication3.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include#include#include
2015-09-03 16:34:02
197
原创 输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表.
题目:输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。要求不能创建任何新的结点,只调整指针的指向。//二叉树结点结构typedef struct Node{ int data; struct Node *Left; struct Node *Right;}ListNode;//算法一ListNode* ConvertNod
2015-09-03 12:44:25
520
原创 快速排序算法C++
它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程
2015-09-01 08:55:50
318
原创 二叉树创建、销毁、按照分层在控制台显示、计算二叉树深度等等
// BinaryTree.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include #include#includeusing namespace std;int calculateLayer(int num);//二叉树结点结构typede
2015-08-30 19:15:42
262
原创 单向链表创建、插入、删除
// ListReverse.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#includeusing namespace std;typedef struct list_Node{ int data; struct list_Node *next;}Node;int reverseList(Node **head
2015-08-30 00:11:16
270
转载 高性能网络编程(一)----accept建立连接
最近在部门内做了个高性能网络编程的培训,近日整理了下PPT,欲写成一系列文章从应用角度谈谈它。编写服务器时,许多程序员习惯于使用高层次的组件、中间件(例如OO(面向对象)层层封装过的开源组件),相比于服务器的运行效率而言,他们更关注程序开发的效率,追求更快的完成项目功能点、希望应用代码完全不关心通讯细节。他们更喜欢在OO世界里,去实现某个接口、实现这个组件预定义的各种模式、设置组件参数来达到目
2015-06-06 05:29:04
238
转载 世界顶级软件工程师面试题
据国外媒体报道,像苹果、谷歌、Facebook这样的硅谷的著名科技公司在招聘的时候有着异常严格的选拔程序。在面试的时候经常会问一些平时很少会遇到的问题来测试应聘者的逻辑思维能力,笔者从多家公司搜集了一些最新的面试问题。如果读者想准备参加谷歌或者苹果这种公司的面试,不妨用这些题练练手,看看自己是否具备这些公司所要求的能力。这些问题很可能以别的形式在招聘过程中出现。记住,要独立完成哦!你准备好了吗?
2015-05-09 19:04:47
470
转载 static_cast与dynamic_cast转换
一 C语言中存在着两种类型转换:隐式转换和显式转换隐式转换:不同数据类型之间赋值和运算,函数调用传递参数……编译器完成char ch;int i = ch;显示转换:在类型前增加 :(Type)变量 对变量进行的转换。用户显式增加char *pc = (char*)pb;void *ps = (void*)pa;二 C++中的类型转换
2015-05-09 17:11:00
212
转载 哈希表的C实现(一)
哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。具体的介绍网上有很详细的描述,如闲聊哈希表 ,这里就不再累述了;哈希表在像Java、C#等语言中是与生俱来的。可是在C的世界中,似乎只有自己动手,丰衣足食;在网上google了一把,大致有几个版本,我会一一来分析
2015-05-09 16:05:05
458
转载 设计模式C++实现——组合模式
模式定义: 组合模式允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合。 这个模式能够创建一个树形结构,在同一个结构中处理嵌套菜单和菜单项组。通过菜单和项放在相同结构中,我们创建了一个“整体/部分”层次结构,即由菜单和菜单项组成的对象树。使用组合结构,我们能把相同的操作应用在组合和个别对象上。换句话说,在大多
2015-05-07 11:31:47
235
转载 C++设计模式实现--原型模式
一、概述: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。其中有一个词很重要,那就是拷贝。可以说,拷贝是原型模式的精髓所在。举个现实中的例子来介绍原型模式。找工作的时候,我们需要准备简历。假设没有打印设备,因此需手写简历,这些简历的内容都是一样的。这样有个缺陷,如果要修改简历中的某项,那么所有已写好的简历都要修改,工作量很大。随着科技的进步,出现了打印设备。我们只需手写
2015-05-06 23:01:50
233
转载 设计模式六大原则(4):接口隔离原则
定义:客户端不应该依赖它不需要的接口;一个类对另一个类的依赖应该建立在最小的接口上。问题由来:类A通过接口I依赖类B,类C通过接口I依赖类D,如果接口I对于类A和类B来说不是最小接口,则类B和类D必须去实现他们不需要的方法。解决方案:将臃肿的接口I拆分为独立的几个接口,类A和类C分别与他们需要的接口建立依赖关系。也就是采用接口隔离原则。举例来说明接口隔离原则:(图1 未遵循接
2015-05-06 22:38:27
205
转载 C++中cout输出字符型指针地址值的方法
先给出通过字符型指针输出字符串的示例代码,如下:?#include usingstd::cout;usingstd::endl;int main(){ constchar *pszStr = "this is a string"; // 输出字符串 cout <<"字符串:"
2015-05-04 22:49:03
649
转载 c++赋值运算符为什么要返回引用?
为什么赋值运算符要返回引用??因为赋值操作会改变左值,而 + 之类的运算符不会改变操作数,所以说赋值运算符重载要返回引用以用于类似 (a=b)=c 这样的再次对a=b进行写操作的表达式。+ 返回一个临时对象是合情合理的 ,你若返回引用大多数情况下也不会出错或导致某个操作数被意外修改,但这就使(a+b)=c这样的表达式可以出现,这就有点不符合约定了,当然,你也可以让 + 返回一个常引用。
2015-05-04 20:38:13
855
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人