
C++
文章平均质量分 64
yuanjilai
走在从2B到NB的路上
展开
-
C++函数模板练习
使用函数模板计算数组的最大值,数组可能是整型数组,实数数组,或者字符串数组。后续会改进,使用vector,输入任意个元素来比较。#include #include using namespace std;#define NUM 10templateT Max( T *t){ T temp; temp = t[0]; for (int n = 1; n < NUM;原创 2011-11-15 19:25:40 · 718 阅读 · 0 评论 -
排序算法总结(3)——交换排序
上两篇文章,《排序算法总结(1)——插入排序》、《排序算法总结(2)——选择排序》。排序主要分为插入排序、选择排序、交换排序、归并排序、计数(也有叫分配)排序。现在总结一下交换排序下面开始第三部分:交换排序三、交换排序交换排序的基本思想是两两比较待排序对象的关键码,如果发生逆序(即排列顺序与期望的相反)就交换,直到所有对象都排序完毕。本节将介绍3种常见的交换排序算法,即冒泡排序原创 2012-09-11 22:49:27 · 696 阅读 · 0 评论 -
死锁的产生、解除与预防
死锁是指两个或两个以上的进程在执行的过程中,因争夺资源而造成的一种互相等待的现象。 产生死锁的四个必要条件:1、互斥条件:一个资源每次只能被一个进程使用。2、请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。(资源的部分分配)3、不剥夺条件:进程已经获得的资源,在未使用完之前,不能强行剥夺。4、循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。原创 2012-10-03 19:13:19 · 685 阅读 · 0 评论 -
不使用库函数编写strlen函数
不使用库函数,甚至不使用变量来写出strlen函数,或者字符串的其他函数是笔试、面试等中经常会遇到的一个问题。下面贴出代码分享。#include #include #include int my_strlen1(const char *str)//递归{ return ('\0' != *str) ? (1+my_strlen1(++str)) : 0;}i原创 2012-10-04 20:11:21 · 3080 阅读 · 2 评论 -
new和malloc的区别
1. malloc()函数1.1 malloc的全称是memory allocation,中文叫动态内存分配。原型:extern void *malloc(unsigned int num_bytes); 说明:分配长度为num_bytes字节的内存块。如果分配成功则返回指向被分配内存的指针,分配失败返回空指针NULL。当内存不再使用时,应使用free()函数将内存块释放。转载 2012-10-05 14:04:40 · 677 阅读 · 0 评论 -
sizeof与const关键字
C++中sizeof与const关键字会经常出错。一、sizeof在32位系统中下面各个sizeof的值是多少? int *p = NULL; sizeof(p)//值为4, 因为32位系统中的指针占4字节 sizeof(*p)//4, 因为此指针指向的是int类型 int a[100]; sizeof(a)//400, 数组大小 sizeof(a[100])/原创 2012-10-05 00:08:42 · 1964 阅读 · 1 评论 -
秒杀多线程面试题系列文章
文章转自MoreWindows的博客,再次特别注明。1.《秒杀多线程第一篇 多线程笔试面试题汇总》2.《秒杀多线程第二篇 多线程第一次亲密接触 CreateThread与_beginthreadex本质区别》3.《秒杀多线程第三篇 原子操作 Interlocked系列函数》4.《秒杀多线程第四篇 一个经典多线程同步问题》5.《秒杀多线程第原创 2012-09-15 19:57:15 · 904 阅读 · 0 评论 -
TopK算法
TopK算法就是寻找最大的K个数字。在上一篇文章《标准模板库STL中优先队列Priority Queues使用手册》的后面提到了使用优先队列解决,更多的解法是用最小堆解决。 参考文章:C语言版 topK 算法实现寻找最大的k个数,TopK问题的C++实现O(N)的时间寻找最大的K个数 TopK代码原创 2012-10-06 16:45:44 · 1223 阅读 · 0 评论 -
排序算法总结(1)——插入排序
排序算法的重要性对于学计算机的童鞋来说是不言而喻的,不管是找工作还是考研,那是笔试必考面试必问!偏偏排序算法多,很容易混淆记不住。我以前也做过总结, 总在写在纸上,过一两个月不看又忘光了,故在此写一篇总结,一是为自己留着,二是为其他有需要的人可以做参考。有错误或改进的地方欢迎留言。废话少说。本文主要总结各种数据结构参考资料上都能见到的常用算法。主要分为插入排序、交换排序、选择排序、原创 2012-09-06 22:45:25 · 830 阅读 · 0 评论 -
排序算法总结(2)——选择排序
接着上一篇文章《排序算法总结(1)——插入排序》的来。排序主要分为插入排序、选择排序、交换排序、归并排序、计数(也有叫分配)排序。现在总结一下交换排序二、选择排序选择排序方案是一类常用的排序方案。其基本思想是在排序时每次选择最小或最大项,将其放入到适当位置上,依此类推。好比玩扑克牌时要将扑克从小到大排列,最常用的方法是在这套扑克牌中每次找出一张最大的牌,放入已选好的牌序列中,重原创 2012-09-11 15:13:22 · 693 阅读 · 0 评论 -
排序算法总结(4)——归并排序、基数排序
前三篇文章:排序算法总结(3)——交换排序排序算法总结(2)——选择排序排序算法总结(1)——插入排序四、归并排序归并排序和快速排序一样,是使用分治策略实现的排序算法,算法可以采用递归实现。所谓归并,就是将两个或两个以上的有序数据序列合并成一个新的有序数据序列。假设数组Array有N个元素,那么可以看成数组Array是由N个有序的子序列组成,每个子序列的原创 2012-09-13 22:41:10 · 927 阅读 · 0 评论 -
strcpy和memcpy的区别
strcpy和memcpy都是标准C库函数,它们有下面的特点。strcpy提供了字符串的复制。即strcpy只用于字符串复制,并且它不仅复制字符串内容之外,还会复制字符串的结束符。已知strcpy函数的原型是:char* strcpy(char* dest, const char* src);memcpy提供了一般内存的复制。即memcpy对于需要复制的内容没有限制,因此用途更转载 2012-10-16 16:36:39 · 640 阅读 · 0 评论 -
不能继承的类
题目:用C++设计一个不能被继承的类思路是将类中的构造函数与析构函数声明为私有的,代码如下:#include using namespace std;class MyFinal{public: static MyFinal* getInstance() { cout<<"Get the Instance"<<endl; return new MyFi原创 2012-11-20 10:27:08 · 535 阅读 · 0 评论 -
深入理解C++中的mutable关键字
mutalbe的中文意思是“可变的,易变的”,跟constant(既C++中的const)是反义词。 在C++中,mutable也是为了突破const的限制而设置的。被mutable修饰的变量,将永远处于可变的状态,即使在一个const函数中。 我们知道,如果类的成员函数不会改变对象的状态,那么这个成员函数一般会声明成const的。但是,有些时候,我们需要在const的函数里面转载 2012-07-10 10:31:09 · 382 阅读 · 0 评论 -
bool,BOOL,VARIANT_BOOL区别
Windows 中BOOL变量常见的好几种类型:小写的bool,大写的BOOL ,还有VARIANT_BOOL 。小写的bool 的是C++ 标准定义的布尔类型, 各个编译器处理的方式不同,Visual C++ 把bool 定为一个字节。小写的true 和 false 也都是C++ 标准定义的关键字。大写的BOOL 是Windows 里面定义的布尔类型,实质上int, 在 wind转载 2012-05-24 15:12:07 · 6293 阅读 · 0 评论 -
操作系统里的生产者、消费者问题
前段时间网上有一个人让我帮他改个程序,操作系统里面生产者与消费者的那个程序,写的一片混乱,改了好长时间。。。。很弱智。#include #include #include #include #include using namespace std;#define BUFFER_NUM 6int product[BUFFER_NUM][2];HANDLE g_se原创 2011-11-15 19:33:11 · 1368 阅读 · 0 评论 -
构造函数、拷贝构造函数的运用
需求:创建一个矩阵类,要求实现矩阵的乘法矩阵元素的数据类型为float,矩阵用双重指针表示;另外,程序要包含:构造函数、拷贝构造函数、析构函数。代码://矩阵类头文件Matrix.h#ifndef _MATRIX_H_#define _MATRIX_H_typedef float DataType;#define ROW 3//矩阵的行#define原创 2011-11-29 12:38:19 · 1181 阅读 · 0 评论 -
KMP字符串模式匹配详解
KMP字符串模式匹配通俗点说就是一种在一个字符串中定位另一个串的高效算法。简单匹配算法的时间复杂度为O(m*n);KMP匹配算法。可以证明它的时间复杂度为O(m+n).。一. 简单匹配算法先来看一个简单匹配算法的函数:int Index_BF (char S[], char T[], int pos){ //若串 S 中从第pos(S 的下标0≤pos<StrLen转载 2012-03-05 15:11:43 · 397 阅读 · 0 评论 -
矩阵类的实现,运算符重载
技术含量不多,主要是自己收藏,记载着这里,以后用的时候再看看。//File matrix.h#ifndef MATRIX_H#define MATRIX_H#include #include using namespace std;templateclass Matrix{//private:public: int row,col;原创 2012-03-06 13:04:13 · 11342 阅读 · 1 评论 -
用vector实现二维向量
如果一个向量的每一个元素是一个向量,则称为二维向量,例如vector >vv(3, vector(4));//这里,两个“>”间的空格是不可少的将构造一个二维向量vv,它含有三个元素,每个元素含有4个int型元素的向量。编译器两次调用vector的构造函数构造对象vv,第一次调用构造函数构造了一个无名的含有4个0的vector对象:[0][1][2]原创 2012-03-05 17:09:27 · 57480 阅读 · 8 评论 -
KMP算法
求next[]数组void comp_next(char *p, int next[]){ int k = -1,i = 0,m = strlen(p); next[0] = -1; while (i < m-1) { while (k != -1 && p[k] != p[i]) k = next[k]; i++; k++; if (p[i] == p[k转载 2012-03-05 15:23:48 · 897 阅读 · 0 评论 -
string与CString分得清么?
首先说string的头文件1、包装了std的C++头文件2、旧的C头文件3、旧C头文件的std版本,切记,这不是cstring的头文件详见effectivec++ 的第49条再说cstring的头文件注:VC9编译环境下1、atlstr.h>非MFC版本,控制台程序就用这个 、都可以。//要在项原创 2012-03-12 21:25:30 · 1194 阅读 · 0 评论 -
计算n的阶乘尾数的0的个数
计算N!后面有多少个0.主要思路就是从1到N个数中有多少个因子5#include using namespace std;int main(){ int n; cin >> n; int factor5_count = 0; // 查找第一个能被5整除的数字,也就是含有5因子的数字。 while (n % 5 != 0) { n --; } whil原创 2012-03-29 19:26:14 · 1877 阅读 · 0 评论 -
qsort和sort的区别----拨云见日
First qsort基本快速排序的方法,每次把数组分成两分和中间的一个划分值,而对于有多个重复值的数组来说,基本排序的效率较低。集成在C语言库函数里面的的qsort函数,使用 三 路划分的方法解决这个问题。所谓三路划分,是指把数组划分成小于划分值,等于划分值和大于划分值的三个部分。函数对buf 指向的数据按升序排序。使用方法:void qsort( void *base, si转载 2012-03-13 13:04:13 · 16019 阅读 · 0 评论 -
MFC改变控件位置和大小
最近经常要用到改变控件在对话框上的位置和大小,一直找不到有效的方法,查看了很多资料。这篇博文还算靠谱,转载到这里了。void CmyqeDlg::OnSize(UINT nType, int cx, int cy){ CDialog::OnSize(nType, cx, cy); if(nType!=SIZE_MINIMIZED) { if (me) // 判断是否为空,因为转载 2012-04-29 21:19:56 · 30963 阅读 · 5 评论 -
Union和Struct
联 合(union) 1. 联合说明和联合变量定义 联合也是一种新的数据类型, 它是一种特殊形式的变量。联合说明和联合变量定义与结构十分相似。其形式为: union 联合名{ 数据类型 成员名; 数据类型 成员名; ... } 联合变量名; 联合表示几个变量公用一个内存位置, 在不同的时间保存不同的数据类型 和不同长度的变量。下例表示转载 2012-04-19 14:47:10 · 827 阅读 · 0 评论 -
C++继承、虚函数、纯虚函数、多态、覆盖、重载、隐藏、引用等常用概念
常用概念有:继承、虚函数、纯虚函数、多态、覆盖、重载、隐藏等1、继承: 继承比较好理解,主要注意继承中构造函数的调用顺序。构造子类(派生类)的时候,先要调用父类(基类)的构造函数。2、虚函数: virtual关键字3、纯虚函数 virtual void breath() = 0; 纯虚函数让基类先具有一个操作名称,原创 2012-11-19 16:32:08 · 1839 阅读 · 0 评论