- 博客(18)
- 资源 (15)
- 问答 (1)
- 收藏
- 关注
原创 STL容器删除的正确打开方式
在应用中,我们通常不可避免地要对容器中的某些特定元素进行删除操作。这看起来并不是什么困难的问题。我们先写一个循环来迭代容器中的元素,如果迭代元素是要删除的元素,则删除之。代码如下所示(错误示范):vector<int> intContainer; for(vector<int>::iterator is = intContainer.begin(); it != intContainer.end(
2016-04-30 10:08:32 1637
原创 从一个logger引发的lib和dll探讨
一. 问题来由项目写了个logger,本来是代码的,大家单独包含都可以使用,但是后来项目整合,每个人的部分打成lib,而前端将logger打包一起编译成lib,后台按道理应该是不用包含 .cpp 文件也可以用到logger,因为如果后台也包含并编译,应该会和前端的编译单元中的 logger 重定义。但是奇怪的是,非但不重定义,反而这边获取不到 io 流 (流是静态变量),匪夷所思,最后是采用命名空
2016-04-29 00:54:38 5989 7
原创 个人编程规范(不断更新)
一、写在前面总结给自己看的规范,如果能给大家借鉴当然更好~~二、变量命名(1)成员变量以 m_ 开头,之后采用大驼峰法命名,如:class Test {public: ... ... int m_Name;}(2)局部变量采用小驼峰法命名,如:int solve() { int localModuleName; ... ...}(3)函数参数采用短横线连接,如:
2016-04-22 09:42:41 1350 2
原创 c++之引用的本质
引用变量是c++引入的重要机制。错误观念:引用本质只是别名,在符号表中ri和i对应于相同的变量地址int i=5;0100437E mov dword ptr [i],5 int &ri=i;01004385 lea eax,[i] 01004388 mov dword ptr [ri],eax ri=8;010
2016-04-18 19:34:35 1995
原创 vs c++内存泄露检测【模板】
一、浅谈内存泄露wikipedia中这样定义内存泄漏: 在计算机科学中,内存泄漏指由于疏忽或错误造成程序未能释放已经不再使用的内存的情况。内存泄漏并非指内存在物理上的消失,而是应用程序分配某段内存后,由于设计错误,导致在释放该段内存之前就失去了对该段内存的控制,从而造成了内存的浪费。在以下情況,内存泄漏导致较严重的后果:(1)程序运行后置之不理,并且随着时间的流失消耗越来越多的内存(比如服务器
2016-04-18 16:50:59 1357
转载 C/C++内存泄漏检测
“该死系统存在内存泄漏问题”,项目中由于各方面因素,总是有人抱怨存在内存泄漏,系统长时间运行之后,可用内存越来越少,甚至导致了某些服务失败。内存泄漏是最难发现的常见错误之一,因为除非用完内存或调用malloc失败,否则都不会导致任何问题。实际上,使用C/C++这类没有垃圾回收机制的语言时,你很多时间都花在处理如何正确释放内存上。如果程序运行时间足够长,如后台进程运行在服务器上,只要服务器不宕机就一
2016-04-18 16:35:55 1165
转载 VS2013常用快捷键
VS2013常用快捷键: 1.回到上一个光标位置/前进到下一个光标位置 1)回到上一个光标位置:使用组合键“Ctrl + -”; 2)前进到下一个光标位置:“Ctrl + Shift + - ”。 2.复制/剪切/删除整行代码 1)如果你想复制一整行代码,只需将光标移至该行,再使用组合键“Ctrl+C”来完成复制操作,而无需选择整行。 2)如果你想剪切一
2016-04-11 12:55:12 900
原创 最大子段和【模板】
最简单的dp,甚至都不用dp数组就可以实现,一个tmp和一个max变量搞定#define MAXN 1002int num[MAXN];int whMaxSub(int a[],int len) { int tmp = INT_MIN; int subMax = INT_MIN; for (int i=0;i<len;++i) { if(tmp<0)
2016-04-10 18:11:37 853
原创 编译单元
当一个c或cpp文件在编译时,预处理器首先递归包含头文件,形成一个含有所有 必要信息的单个源文件,这个源文件就是一个编译单元。这个编译单元会被编译成为一个与cpp 文件名同名的目标文件(.o或是.obj) 。连接程序把不同编译单元中产生的符号联系起来,构成一个可执行程序。 可以把它理解为:#include完头文件的内容后(即将头文件的内容粘贴到cpp中之后)的cpp文件就是编译单元。简单说,一个编
2016-04-08 16:29:01 1714
原创 403 Forbidden
一、题目大意403 Forbidden 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Little Hi runs a web server. Sometimes he has to deny access from a certain set of malicious IP addresses while his friends are still all
2016-04-06 22:10:15 1142
原创 Font Size
一、题目大意时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 Steven loves reading book on his phone. The book he reads now consists of N paragraphs and the i-th paragraph contains ai characters.Steven wants to mak
2016-04-06 22:07:11 1104
原创 回文子串(模板)Manacher O(n)算法
一、问题描述回文子串和回文子序列不同: 子串,一定要连续 子序列,不一定连续其实最长回文子串是可以转换成LCS来做的,具体方法就是: 将原串生成反向串,然后用dp求原串和反向串的LCS但是这样缺点也很明显的是O(n*n)的复杂度,即使优化到:滚动数组+下标找反向串,也不能从根本上解决这个算法的低效。如果想在 O(n) 时间内解决回文子串问题呢?答案就是Manacher算法,用一句话
2016-04-06 16:44:55 1029
原创 poj 3974 最长回文子串
一、题目大意一道裸的最长回文子串题目,既然是子串,就是说一定要连续,而不是子序列。本题目的难点在 Time Limit: 15000MS,要在15s内跑出 n=1000000 的结果,必然只能O(NlogN)的后缀数组的和O(N)的Manacher。当然这里我用的是Manacher算法,这个算法很巧妙,但是也比较局限,只能是最长回文子串能用。详细的算法思想见,Manacher算法模板。二、AC co
2016-04-06 16:31:39 1256
原创 poj 1159 最长公共子序列+滚动数组
一、题目大意一个字符串,可在任意位置添加字符,最少再添加几个字符,可以使这个字符串成为回文字符串。设原序列S的逆序列为S’ ,则这道题目的关键在于, 最少需要补充的字母数 = 原序列S的长度 — S和S’的最长公共子串长度于是看似一个回文字串,变成了LCS。但是关键是这个不能用裸的LCS搞定,因为5000的int二维数组,大约100M,肯定爆64M的内存。要用到滚动数组,思路如下: 因为
2016-04-05 00:13:35 1748
原创 char s[]="123456\0";
int main(){ //freopen("input.txt","r",stdin); char s[]="123456\0"; PRINT(sizeof(s)); PRINT(s); return 0;}输出: 8 123456内存中存放的是: 1 2 3 4 5 6 \0 \0
2016-04-04 23:50:40 2614
原创 最长公共子序列 LCS(模板) poj 1458
一、AC code(模板)#include <iostream>#include <stdio.h>#include <cstring>#include <vector>#include <cmath>#include <algorithm>#include <set>#include <cassert>#include <time.h>#include <queue>#incl
2016-04-04 13:44:40 1290
转载 vs解决无符号类型,安全开发生命周期(SDL)检查
前面在学习使用google的protobuf时在VS2012中一直无法编译编译通过,经过查找一些资料原来发现,并不是protobuf的问题,而是自己在使用VS2012时,没有完全了解VS2012的强大功能,和跟以前VS2010的差别,导致无法编译通过。现在就来说说为什么没有编译通过,在VS2012创建项目时,会有一个勾选项,叫做“安全开发生命周期(SDL)检查”,这个东西是微软
2016-04-04 10:56:54 9290 1
原创 蛇形数组
#include<iostream>#include<string.h>using namespace std;const int MAXN=500;int map[MAXN][MAXN];void printMap(int n) { for(int i=1;i<=n;++i){ for(int j=1;j<=n;++j) { cout<<map
2016-04-03 20:55:53 1177
【免费】很小的UML画类图工具很好用
2015-08-03
《算法导论原书第3版》(高清正宗中文版).pdf
2013-10-06
父类非虚函数,子类继承变成虚函数,会发生什么
2015-08-04
TA创建的收藏夹 TA关注的收藏夹
TA关注的人