C++
文章平均质量分 74
天下太平
人生像风铃
展开
-
重载小括号
重载类型转换运算符、重载函数调用运算符。原创 2022-01-24 19:00:00 · 671 阅读 · 0 评论 -
元编程meta-programming
介绍元编程的本质,C++和Julia中元编程的实现机制。原创 2022-01-24 10:04:53 · 827 阅读 · 0 评论 -
C++ 从&到&&(从左值引用到右值引用)
阐述了指针、引用,左值引用、右值引用的本质。原创 2022-01-21 10:22:25 · 967 阅读 · 0 评论 -
C++历史感悟
开始,面向对象的思想,诞生了一批对象化语言,其中有一个是C with classes。后来,操作界面的诞生,刺激了图形学的发展,C++到达顶峰,代表作STL MFC。接着,C++开始下滑,细分领域不断被其他语言蚕食。例如rust go julia D dart。现在,手机带来了图形学大量需求。想想图形学是C++的催化剂。 * UE4选择了C++。 * cocos2d有C++版本,底层C+...原创 2019-10-26 15:50:04 · 184 阅读 · 1 评论 -
std::qsort和std::sort的区别
文章目录sortqsort比较sort头文件:algorithm原型:template< class RandomIt >constexpr void sort( RandomIt first, RandomIt last );template< class RandomIt, class Compare >constexpr void sort( Rand...原创 2019-04-13 23:48:11 · 2132 阅读 · 0 评论 -
快速排序写法
双指针法//升序排列void quick_sort(int* A, int start, int end) { if (start >= end) return; int i = start, j = end, key = A[start]; while (i < j) { while (i < j &&...原创 2019-04-14 00:39:28 · 274 阅读 · 0 评论 -
重载全局new跟踪内存泄漏
重载全局new跟踪内存泄漏转载 2019-05-04 23:20:28 · 279 阅读 · 0 评论 -
int类型 ++i i++ j=++i j=i++的区别
int i = 0;00071ABE mov dword ptr [i],0 ++i;00071AC5 mov eax,dword ptr [i] 00071AC8 add eax,1 00071ACB mov dword ptr [i],eax i++;00071ACE mov ...原创 2019-05-14 01:42:17 · 4892 阅读 · 0 评论 -
翻转一个字节
unsigned char func( unsigned char c){ static unsigned char sta[16] ={//不多不少的静态数据 0x00,0x08,0x04,0x0C,0x02,0x0A,0x06,0x0E,0x01,0x09,0x05,0x0D,0x03,0x0B,0x07,0x0F }; unsigned char d ...原创 2019-05-12 02:02:04 · 710 阅读 · 0 评论 -
new和malloc的区别
new和malloc的区别原创 2019-07-03 20:34:59 · 87 阅读 · 0 评论 -
在桌边垒砖块,求砖块右端距离桌边最大距离
文章目录思路结果思路分析第1块,显然最大是1/2.第2块不能往上放了,只能往下边放。垒到第n块时,前n-1块的中心,必须在第n块的右边缘。假设,第n块有边缘距离桌边距离x,得到公式:(1−x)22=x22+(n−1)x→x=12n\frac{(1-x)^2}{2} =\frac{x^2}{2} + (n-1)x \to x = \frac{1}{2n}2(1−x)2=2x2+(n−...原创 2019-04-13 10:41:10 · 487 阅读 · 0 评论 -
k个鸡蛋从N楼层摔,最坏情况下最少要试验x次
目录思路公式解思路k个鸡蛋从N楼层摔,最坏情况下最少要试验x次。换个说法:k个鸡蛋试验x次最多可以检测N层楼。空间复杂度O(k)时间复杂度O(k*lnN)代码如下int solution(int n, int k) { int bs = log2n(n) + 1; if (k >= bs) { return bs; } int*...原创 2019-04-13 01:45:23 · 856 阅读 · 0 评论 -
交换两个元素
交换元素的代码一般有三种:1.中间变量过渡。template void Swap(T& a, T& b) { T temp = a; a = b; b = temp;}2.减法运算。template void Swap(T& a, T& b) { a = a - b; b = a + b; a = b - a;}3.异或运算。tem原创 2013-09-09 17:34:02 · 1042 阅读 · 0 评论 -
统计二进制数字中1的个数
统计二进制数字中1的个数三种方法1.逐位比较 O(n) = 32int Count1(int n){ int count = 0; while (n != 0) { count += n&1; n >>= 1; } return count; }2.最低1位清零 O(n) = count(n) /...原创 2013-09-09 18:32:49 · 1380 阅读 · 0 评论 -
组合算法实现
111原创 2013-09-11 18:30:40 · 3225 阅读 · 1 评论 -
排列算法实现
排列算法从集合S(n)中,任取k(k≤n)个元素,按照一定的顺序(有序性)排成一列,叫做集合S的一个k-排列。从集合S(n)中,取出的k-排列的总个数,叫做集合S的k-排列数。 排列符号:这里介绍3种排列形式:1.全排列。2.不重复全排列。3.选择排列。原创 2013-09-13 14:08:06 · 794 阅读 · 0 评论 -
工作bug集
1.windows中TCAHR关键字的字节数当文件格式是unicode格式是,TCHAR为2个字节;当是ASCII方式时,TACHR为1个字节。见头文件winnt.h#ifdef UNICODE // r_winnt#ifndef _TCHAR_DEFINEDtypedef WCHAR TCHAR, *PTCHAR;typede原创 2013-12-17 16:02:43 · 1205 阅读 · 0 评论 -
C++ delete报错原因
C++ delete报错原因释放内存两种方式:new deletenew [] delete []出错现象:1.执行delete语句时,程序直接弹窗,崩溃。2.执行delete语句时,程序卡死。将delete语句注释掉,又正常了,但发生了内存泄露。原因分析:1.数组首地址被无意更改。例如:int A[10]; A++;2.作用域不同。例如:在函数A中new的内存 int p = new int原创 2013-09-02 16:33:44 · 30572 阅读 · 1 评论 -
跨平台的高精度计时类
windows环境用linux环境用原创 2014-05-12 18:02:23 · 1262 阅读 · 2 评论 -
rand32类
写的一个简单的rand32类。线性同余法生成。附源码:rand32.h//**************************************************************//desc:generate pseudo random numbers through Linear Congruence//name:rand32.h//auth:zhou原创 2014-04-01 10:50:43 · 1438 阅读 · 0 评论 -
C/C++拾撷
VC中的interface关键字定义:#define interface structVC中结构体实现一字节对齐:#pragma pack(push, 1)struct{ ......};#pragma pack(pop)GUID(全局唯一标识符)的定义,包含在头文件guiddef.h中#ifndef GUID_DEFINED#define原创 2013-08-16 11:21:05 · 1126 阅读 · 0 评论 -
VC常用类型别名
VC类型别名定义在头文件WinDef.h,常用类型如下:VC类型C/C++ 等价类型VC类型C/C++ 等价类型BOOLintBOOLEANunsigned charBYTEunsigned charCHARchar原创 2013-08-16 11:47:38 · 1217 阅读 · 0 评论