- 博客(26)
- 资源 (11)
- 收藏
- 关注
原创 C++volatile关键字
遇到这个关键字声明的变量,编译器对访问该变量的代码就不再进行优化,从而可以提供对特殊地址的稳定访问。声明时语法:int volatile a; 或者volatile int a;当要求使用 volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,即使它前面的指令刚刚从该处读取过数据。而且读取的数据立刻被保存。一般说来,volatile 用在如下的几个地方: 1) 中断服务程序中
2016-09-27 20:45:44 488
原创 二分法查找C++实现
#include <iostream>#include <vector>using namespace std;int binary_seacher(vector<int> &v, int target){ if (v.empty()) return -1; int index1 = 0, index2 = v.size() - 1, mid = 0; wh
2016-09-27 15:28:49 17725
转载 extern "c"用法解析
引言 C++保留了一部分过程式语言的特点,因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。 extern “C”的主要作用就是为了能够正确实现C++代码调用其他C语言代码。加上extern”C”后,会指示编译器这部分代码按C语言的进行编译,而不是C++的。由于C++支持函数重载,因此编译器编
2016-09-27 12:09:48 14216
转载 如何计算时间复杂度
一、概念时间复杂度是总运算次数表达式中受n的变化影响最大的那一项(不含系数)比如:一般总运算次数表达式类似于这样:a*2^n+b*n^3+c*n^2+d*n*lg(n)+e*n+fa ! =0时,时间复杂度就是O(2^n);a=0,bO(n^3);a,b=0,cO(n^2)依此类推eg:(1) for(i=1;i<=n;i++) //循环了n*n次,当然是O(n^2)
2016-09-26 16:43:49 14507 1
原创 C语言字符串函数总结
/* 拼接多个字符串 * argc: the number of strings */char * strcat2(int argc, const char *str1, const char *str2, ...) { int tmp = 0; char *dest = NULL; char *cur = NULL; va_list va_ptr;
2016-09-26 10:37:24 14362
原创 电话号码身份
C++代码实现:#include <iostream>#include <string>#include <algorithm>#include <vector>#include <map>using namespace std;int main(){ map<string, string> mp; map<string, string>::iterator it;
2016-09-24 02:28:06 14533
原创 剑指offer----整数中1出现的次数(从1到n整数中1出现的次数)
设N = abcde ,其中abcde分别为十进制中各位上的数字。 如果要计算百位上1出现的次数,它要受到3方面的影响:百位上的数字,百位以下(低位)的数字,百位以上(高位)的数字。 ①如果百位上数字为0,百位上可能出现1的次数由更高位决定。比如:12013,则可以知道百位出现1的情况可能是:100~199,1100~1199,2100~2199,,…,11100~11199,一共1200个。可
2016-09-21 22:14:22 6543
原创 为什么static数据成员一定要在类外初始化?
1、为什么静态成员不能在类内初始化? 在C++中,类的静态成员(static member)必须在类内声明,在类外初始化,像下面这样。class A { private: static int count ; // 类内声明 };int A::count = 0 ; // 类外初始化,不必再加static关键字为什么?因为静态成员属于整个类,而不属于某个对象,如果在类内初始化,会导
2016-09-21 00:30:50 24946 2
转载 面向对象的基本原则
一、单一职责原则: 全称:“Single-Responsibility Principle” 说明:就一个类而言,应该只专注于做一件事和仅有一个引起它变化的原因。所谓职责,我们可以理解他为功能,就是设计的这个类功能应该只有一个,而不是两个或更多。也可以理解为引用变化的原因,当你发现有两个变化会要求我们修改这个类,那么你就要考虑撤分这个类了。因为职责是变化的一个轴线,当需求变化时,该变化会反映类的
2016-09-20 17:28:03 14145
转载 C++用模板实现栈
#ifndef _CStack #define _CStack #include<iostream.h> template<class T>class CStack{ // LIFO 对象 public: CStack(int MaxStackSize = 10); ~CStack() { delete[] stack; } bool IsEmpty
2016-09-18 10:30:44 14393
转载 Linux下rar 命令压缩和解压详解
例1:添加文件或目录到压缩档案中,使用a命令。例如把文件files1添加到abc.rar中,使用a或m命令,a命令把file1文件添加到abc.rar档案中保持原有的file1文件不变,m命令移动file1文件到file1.rar档案中(压缩完成后会删除原有的file1文件,注意:m命令只针对文件进行操作) $rar a abc.rar file1说明:如果此时abc.rar档案不存在,会自行创建
2016-09-11 19:29:45 15420
原创 程序打印日志
为什么需要日志工具: 1方便调试 2方便代码维护日志输出信息设计: 日志信息等级 + 日期时间 + 调试信息日志输出等级设计(5个等级) 0调试[debug]:仅仅用于调试 1普通信息[info]:可以让使用者了解的一些信息 2警告信息[warn]:意味着程序中出现了错误,但是并不严重 4错误信息[error]:意味着程序中发生了严重错误,根据实际情况可选择使程序继续运行或使程序终止
2016-09-11 19:24:27 14637
原创 C++中哪些运算符不可重载
几乎所有的运算符都可用作重载。具体包含: 算术运算符:+,-,*,/,%,++,–; 位操作运算符:&,|,~,^,<<,>> 逻辑运算符:!,&&,||; 比较运算符:<,>,>=,<=,==,!=; 赋值运算符:=,+=,-=,*=,/=,%=,&=,|=,^=,<<=,>>=; 其他运算符:[],(),->,,(逗号运算符),new,
2016-09-07 09:40:30 36504 2
转载 static_cast, dynamic_cast, reinterpret_cast, const_cast区别比较
原:http://www.cnblogs.com/jerry19880126/archive/2012/08/14/2638192.html隐式转换(implicit conversion)short a=2000;int b;b=a;short是两字节,int是四字节,由short型转成int型是宽化转换(bit位数增多),编译器没有warning,如下图
2016-09-07 00:52:04 14110
原创 http协议状态码
100(继续)请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正在等待其余部分。101(切换协议)请求者已要求服务器切换协议,服务器已确认并准备切换。2xx(成功) 表示成功处理了请求的状态码。200(成功)服务器已成功处理了请求。通常,这表示服务器提供了请求的网页。如果是对您的 robots.txt 文件显示此状态码,则表示 Googlebot 已成功检索到该文件。201(已创
2016-09-06 13:10:52 14371
转载 在mysql中,以下哪种方式可以开启一个事务?
在mysql中,以下哪种方式可以开启一个事务? A. START TRANSACTION B. START C. BEGIN D. BEIGN TRANSACTION 正确答案: A C BEGIN或START TRANSACTION;显示地开启一个事务;COMMIT;也可以使用COMMIT WORK,不过二者是等价的。COMMIT会提交事务,并使已对数据库进行的所有修改称为永久性的;R
2016-09-06 12:54:58 15735
原创 mysql的between的边界问题
mysql的sql语句中可以使用between来限定一个数据的范围,例如:select * from user where userId between 5 and 7; 查询userId为5、6,7的user,userId范围是包含边界值的,也等同如下查询:select * from user where userId >= 5 and userId <= 7; 很多地方都提到between是
2016-09-06 11:34:19 111059 2
原创 中缀表达式转换成前缀表达式和后缀表达式
35,15,+,80,70,-,*,20,/ //后缀表达方式(((35+15)*(80-70))/20)=25 //中缀表达方式 /,*,+,35,15,-,80,70, 20 //前缀表达方式 人的思维方式很容易固定!正如习惯了10进制。就对2,3,4,8,16 等进制不知所措一样!人们习惯的运算方式是中缀表
2016-09-06 11:02:35 17421 4
转载 map 和 hash_map 的使用方法
STL map常用操作简介1。目录map简介map的功能使用map在map中插入元素查找并获取map中的元素从map中删除元素2。map简介map是一类关联式容器。它的特点是增加和删除节点对迭代器的影响很小,除了那个操作节点,对其他的节点都没有什么影响。对于迭代器来说,可以修改实值,而不能修改key。3。map的功能
2016-09-05 17:51:49 15606
原创 剑指offer----第一个只出现一次的字符
在一个字符串(1<=字符串长度<=10000,全部由大小写字母组成)中找到第一个只出现一次的字符,并返回它的位置。 int FirstNotRepeatingChar(string str) { if(str.empty()) return -1; map<char, int> mp; for(int i =
2016-09-05 17:46:59 14127
原创 求数组中数量超过一半的数
//思路:数量超过一半的数,比其他所有数的和都多int MoreThanHalfNum_Solution2(int* numbers, int length){ if(CheckInvalidArray(numbers, length))//参数规范检查 return 0; int result = numbers[0]; int times = 1;
2016-09-04 16:22:45 29041
原创 快速排序算法C++实现
快速排序采用的思想是分治思想。快速排序是找出一个元素(理论上可以随便找一个)作为基准(pivot),然后对数组进行分区操作,使基准左边元素的值都不大于基准值,基准右边的元素值 都不小于基准值,如此作为基准的元素调整到排序后的正确位置。递归快速排序,将其他n-1个元素也调整到排序后的正确位置。最后每个元素都是在排序后的正 确位置,排序完成。所以快速排序算法的核心算法是分区操作,即如何调整基准的位置以及
2016-09-04 13:44:41 14377 2
原创 字符串全排列
一、字符串的排列 用C++写一个函数, 如 vector Permutation(string str),打印出 str 的全排列,如 abc 的全排列: abc, acb, bca, dac, cab, cba 二、全排列的递归实现 为方便起见,用123来示例下。123的全排列有123、132、213、231、312、321这六种。首先考虑213和321这二个数是如何得出的。显然这二个都是1
2016-09-03 15:00:47 14419
转载 一步一图一代码,一定要让你真正彻底明白红黑树
原文:http://blog.csdn.net/chenhuajie123/article/details/11951777
2016-09-01 17:23:10 14495
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人