C++
文章平均质量分 70
mengfanteng
这个作者很懒,什么都没留下…
展开
-
UTF8<->ANSI转换函数
#include #include void Convert(const char* strIn,char* strOut, int sourceCodepage, int targetCodepage) { int len=lstrlen(strIn); int unicodeLen=MultiByteToWideC原创 2016-09-07 14:19:41 · 1311 阅读 · 0 评论 -
大数相乘、相加
char* mult(char *a, char *b, int m, int n){ // 为结果分配内存空间。 char *c = (char*)malloc((m + n + 1) * sizeof(char)); memset(c, 0, (m + n + 1) * sizeof(char)); // 将字符(0 + 0x30 到 9 + 0x30)转换原创 2014-11-29 16:04:59 · 500 阅读 · 0 评论 -
error C2146: 语法错误 : 缺少“;”(在标识符“PVOID64”的前面)
在stdafx.h的开头,加上如下代码:#ifndef POINTER_64#if !defined(_MAC) &&(defined(_M_MRX000) || defined(_M_AMD64) || defined(_M_IA64))&& (_MSC_VER >=1100) && !(defined(MIDL_PASS) ||defined(RC_INVOKED)转载 2016-01-07 19:14:53 · 1391 阅读 · 1 评论 -
在C++中子类继承和调用父类的构造函数方法
构造方法用来初始化类的对象,与父类的其它成员不同,它不能被子类继承(子类可以继承父类所有的成员变量和成员方法,但不继承父类的构造方法)。因此,在创建子类对象时,为了初始化从父类继承来的数据成员,系统需要调用其父类的构造方法。 如果没有显式的构造函数,编译器会给一个默认的构造函数,并且该默认的构造函数仅仅在没有显式地声明构造函数情况下创建。构造原则如下: 1. 如果子类没有定原创 2015-11-23 16:21:51 · 429 阅读 · 0 评论 -
C++不定参数的应用
不定参数当年做为C/C++语言一个特长被很多人推崇,但是实际上这种技术并没有应用很多。除了格式化输出之外,我实在没看到多少应用。主要原因是这种技术比较麻烦,副作用也比较多,而一般情况下重载函数也足以替换它。尽管如此,既然大家对它比较感兴趣,我就简单总结一下它的使用和需要注意的常见问题。原理刚学C语言的时候,一般人都会首先接触printf函数。通过这个函数,你可以打印不定个数的变量到屏幕转载 2015-09-01 10:10:45 · 570 阅读 · 0 评论 -
如何使用source insight
工具/原料source insight软件需要浏览的工程代码安装source insight软件1首先,介绍一下source insight的安装,百度搜索source insight,找到相关软件,下载安装。步骤阅读2版本:3.5.72.0可使用于转载 2015-08-13 10:32:23 · 1126 阅读 · 0 评论 -
多重继承
《C++ primer 3th》P794~798为支持多继承,一个类的派生表:class Bear : public ZooAnimal { ... };被扩展成支持逗号分割的基类表。例如:class Panda : public Bear, public Endangered { ... };每个被列出的基类还必须指定其访问级别:public、protected 或priva转载 2015-07-28 09:53:24 · 422 阅读 · 0 评论 -
GDB十分钟教程
作者: liigo原文链接: http://blog.csdn.net/liigo/archive/2006/01/17/582231.aspx日期: 2006年1月16日本文写给主要工作在Windows操作系统下而又需要开发一些跨平台软件的程序员朋友,以及程序爱好者。GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具转载 2015-07-28 14:46:36 · 333 阅读 · 0 评论 -
Linux下编译静态、动态库
Linux下编译静态、动态库源码-----------a.cpp---------------#include int a(int i){ std::printf("in a(int a) %d\n", i); return 0;}-----------b.cpp----------------#include int b(char *s)原创 2013-02-22 09:40:41 · 746 阅读 · 0 评论 -
memcpy的实现,考虑重叠地址空间。
软件工程师在面试中,经常被要求在白板上写一些小程序来检查程序员的代码书写风格及对细节的处理能力,memcpy就是经常被问到的一个。下面有两个版本的memcpy,第一个没有考虑目标地址空间和源地址空间重叠的问题,第二个则把这个问题考虑了进去。//version 1, no memory overlap is consideredvoid *memcpy(void *dst, co原创 2015-06-08 20:00:18 · 2051 阅读 · 0 评论 -
虚函数的内部实现机制
首先只有含有一个或多个virtual函数的类或结构体,才需要添加这种额外的运行时信息。而且这些信息是由对象自身来维护的。对象需要维护哪些信息呢?首先是该对象的实际类型信息;其次就是一个指向虚函数表的指针(该虚函数表里存储了类中所有虚函数运行时的地址信息)。一个拥有virtual成员函数的类拥有一个虚函数表,而该类的每个对象都拥有一个虚指针,指向该类的虚函数表。运行时,通过对象自己的虚指针去索引转载 2015-06-08 19:04:06 · 760 阅读 · 0 评论 -
int、long、long long取值范围
unsigned int 0~4294967295 int -2147483648~2147483647 unsigned long 0~4294967295long -2147483648~2147483647long long的最大值:9223372036854775807long long的最小值:-9223372036854775808unsigned long原创 2014-11-20 20:36:44 · 5900 阅读 · 0 评论 -
生成随机密码的C代码实现
问题描述 某些软件在登录的时候,经常会要求用户输入一个系统发过来的随机密码(或称校验码),用于对用户的身份进行校验,防止恶意登录。 要求用C语言生成一组长度为6位的随机密码串。 rand函数简介 rand函数是真正的随机数生成器,它会返回一个范围在0到RAND_MAX(2147483647)之间随机数值。转载 2015-05-28 16:16:14 · 786 阅读 · 0 评论 -
Mongodb在Windows下安装及配置
1.下载mongodb的windows版本,有32位和64位版本,根据系统情况下载,下载地址:http://www.mongodb.org/downloads2.解压缩至E:/mongodb即可3.创建数据库文件的存放位置,比如D:/mongodb/data/db。启动mongodb服务之前需要必须创建数据库文件的存放文件夹,否则命令不会自动创建,而且不能启动成功。默认文件夹路径为c:/d转载 2013-08-29 10:09:37 · 511 阅读 · 0 评论 -
C++中有三种创建对象 内存分配问题
我们都知道C++中有三种创建对象的方法,如下:#include using namespace std;class A{private: int n;public: A(int m):n(m) { } ~A(){}};int main(){ A a(1); //栈中分配 A b = A(1); //栈中分配转载 2016-04-09 16:54:18 · 1616 阅读 · 0 评论 -
accumulate 动态规划
accumulate是用于累计计算的函数,默认情况下是求和。而其中第三个参数便是和的初始值。如果数据为a0, ..., an,则accumulate返回a0 + ... + an + 初始值。事实上,accumulate有两个版本:templateT accumulate( InputIt first, InputIt last, T init );templateT accumulat原创 2016-04-10 10:46:02 · 430 阅读 · 0 评论 -
写一个随机洗牌函数
题目写一个随机洗牌函数。要求洗出的52!种组合都是等概率的。 也就是你洗出的一种组合的概率是1/(52!)。假设已经给你一个完美的随机数发生器。解答这是一道非常有名的面试题,及非常有名的算法——随机洗牌算法。最直观的思路是什么?很简单,每次从牌堆中随机地拿一张出来。那么, 第一次拿有52种可能,拿完后剩下51张;第二次拿有51种可能,第三次拿有50种可能, …,一直转载 2016-07-15 21:11:06 · 2273 阅读 · 0 评论 -
C++ bitmap
题目有一个数组,里面的数在1到N之间,N最大为32000.数组中可能有重复的元素(即有的元素 存在2份),你并不知道N是多少。给你4KB的内存,你怎么把数组中重复的元素打印出来。解答我们有4KB的内存,一共有4 * 210 * 8位,大于32000,所以我们可以用Bit Map 来做这道题目。题目很简单,不过我们可以把代码写得漂亮一些。 我们可以写一个Bit Map类来完成转载 2016-07-15 16:48:00 · 1088 阅读 · 0 评论 -
C++learning
第一层次,C++基础:挑选一本入门书籍,如《C++ Primer》、《C++大学教程》、或Stroustrup撰写的经典《C++程序设计语言》或他一年半前的新作《C++程序设计原理与实践》,而一般C++课程也止于此,另外《C++ 标准程序库》及《The C++ Standard Library Extensions》可供参考;第二层次,正确高效地使用C++:此层次开始必须自修,阅读过《(Mor原创 2016-06-19 11:26:05 · 449 阅读 · 0 评论 -
原码, 反码, 补码 详解
本篇文章讲解了计算机的原码, 反码和补码. 并且进行了深入探求了为何要使用反码和补码, 以及更进一步的论证了为何可以用反码, 补码的加法计算原码的减法. 论证部分如有不对的地方请各位牛人帮忙指正! 希望本文对大家学习计算机基础有所帮助! 一. 机器数和真值在学习原码, 反码和补码之前, 需要先了解机器数和真值的概念.1、机器数一个数在计算机中的二进制表示形式转载 2016-07-15 15:24:09 · 360 阅读 · 0 评论 -
为什么8位二进制的补码取值范围是-128~127
转载 2016-07-15 15:23:02 · 4040 阅读 · 2 评论 -
C++中 overload 、override、overwrite 之间的区别
Overload、Overwrite和Override的概念比较容易混淆,而且Overwrite和Override的中文翻译五花八门,让人很Confuse,顾保持英文原意:Overload 重载在C++程序中,可以将语义、功能相似的几个函数用同一个名字表示,但参数不同(包括类型、顺序不同),即函数重载。(1)相同的范围(在同一个类中);(2)函数名字相同;(3)参数不转载 2016-07-13 10:32:44 · 472 阅读 · 0 评论 -
C++类的静态成员初始化详细讲解
记住:通常静态数据成员在类声明中声明,在包含类方法的文件中初始化.初始化时使用作用域操作符来指出静态成员所属的类.但如果静态成员是整型或是枚举型const,则可以在类声明中初始化!!!复制代码 代码如下:#include using namespace std;class test{public:static int num;};int test::nu转载 2016-07-12 16:11:01 · 8105 阅读 · 0 评论 -
memcpy与memmove
1.source和destin所指的内存区域可能重叠,但是如果source和destin所指的内存区域重叠,那么这个函数并不能够确保source所在重叠区域在拷贝之前不被覆盖。而使用memmove可以用来处理重叠区域。函数返回指向destin的指针.2.如果目标数组destin本身已有数据,执行memcpy()后,将覆盖原有数据(最多覆盖n)。如果要追加数据,则每次执行memcpy后,要将目标原创 2016-06-02 22:01:46 · 517 阅读 · 0 评论 -
如何准备互联网公司面试(算法相关)
来源:http://meterfield.com/otbzi/index.php/2011-03-17/2010-interview-summary-part2/PS. 推荐一个算法blog,http://blog.csdn.net/v_july_v/,http://blog.csdn.net/v_july_v/article/details/6543438以下为转载原文本转载 2016-05-17 16:54:51 · 441 阅读 · 0 评论 -
AVL树,红黑树,B树,B+树,Trie树都分别应用在哪些现实场景中
而 B B+则运用在file system database这类持续存储结构,同样能保持lon(n)的插入与查询,也需要额外的平衡调节。像mysql的数据库定义是可以指定B+ 索引还是hash索引。C++ STL中的map就是用红黑树实现的。AVL树和红黑树都是二叉搜索树的变体,他们都是用于搜索。因为在这些书上搜索的时间复杂度都是O(h),h为树高,而理想状况是h为n。所以构造的办法就是把二叉原创 2016-05-18 11:26:58 · 9391 阅读 · 0 评论 -
动态规划求取连续数组最大和
动态规划求取连续数组最大和int main(){const int size=10;int array[size]={3,-1,8,-10,11,2,3,4,-7,3};//输入数组int MaxSumOfArray[size]={0};//此数组保存下标对应元素值为,从array数组 【0-下标】连续子数组的最大和。MaxSumOfArray[0]=array[0];int c原创 2016-05-16 22:46:54 · 617 阅读 · 0 评论 -
判断一个单链表是否有环及环的链接点(转)
给定一个单链表,只给出头指针h:1、如何判断是否存在环?2、如何知道环的长度?3、如何找出环的连接点在哪里?4、带环链表的长度是多少? 解法:1、对于问题1,使用追赶的方法,设定两个指针slow、fast,从头指针开始,每次分别前进1步、2步。如存在环,则两者相遇;如不存在环,fast遇到NULL退出。2、对于问题2,记录下问题1的碰撞点p,slow、fast从该点转载 2016-05-16 22:50:40 · 336 阅读 · 0 评论 -
map vector 插入时间复杂度
问题: 将N个元素使用push_back插入到vector中, 求push_back操作的复杂度。 简单分析如下: 考虑vector每次内存扩充两倍的情况。 如果我们插入N个元素, 则会引发lgN次的内存扩充,而每次扩充引起的元素拷贝次数为 2^0, 2^1, 2^2, ..., 2^lgN原创 2016-05-16 15:34:51 · 14477 阅读 · 1 评论 -
C/C++经典书籍推荐
以下书籍为大牛师兄为 师弟 做的一些推荐,现分享之,欢迎大家对好书进行补充~C++:C++ Primer (学习C++的都懂的)高质量C/C++ (国内C/C++经典书籍)Effective C++ (提高代码质原创 2015-03-15 14:47:09 · 1000 阅读 · 0 评论 -
C/C++获取当前系统时间
//方案— 优点:仅使用C标准库;缺点:只能精确到秒级#include #include int main( void ) { time_t t = time(0); char tmp[64]; strftime( tmp, sizeof(tmp), "%Y/%m/%d %X %A 本年第%j天 %z",localtime(&t) );转载 2015-01-15 14:43:02 · 600 阅读 · 0 评论 -
string 类
#include #include using namespace std;class mystring{ public : mystring(const char *q=""); mystring(const mystring &); ~mystring(); mystring& operator +=(const mystrin原创 2013-02-22 15:13:39 · 448 阅读 · 0 评论 -
封装一个类
// 封装class __declspec(dllexport) CLangIni// 调用__declspec(dllimport) class CLangIni#pragma comment(lib, "LangIni.lib") // 加入lib文件封装一个类是很不好的,这是一种非标准扩展,这种扩展兼容性如何很难说。一般声明一个纯虚类,然后在Dll中派生这个纯虚类,然后提供一原创 2013-02-22 09:34:31 · 932 阅读 · 0 评论 -
Linux C调用C++库(用C封装C++接口)
Linux C调用C++库(用C封装C++接口) C一般不能直接调用C++函数库,需要将C++库封装成C接口后,才可以使用C调用。 下面举例,说明一个封装策略: //code in add.cxx #include "add.h" int sample::method() { cout<<"method is called!\n";原创 2013-02-22 09:30:12 · 2974 阅读 · 0 评论 -
虚拟继承
虚拟继承《c++ primer 3th》p813在缺省情况下,C++中的继承是按值组合的一种特殊情况。当我们写:class Bear : public ZooAnimal { ... };每个Bear类对象都含有其ZooAnimal基类子对象的所有非静态数据成员,以及在Bear中声明的非静态数据成员。类似地,当派生类自己也作为一个基类对象时,如:class PolarB原创 2013-02-21 17:50:31 · 689 阅读 · 0 评论 -
c++中静态变量和静态函数
以前对静态变量只是在C里面的理解。我是这样认为的,静态变量可以在函数中声明,然后其他函数中也可以使用。相当于在函数中声明的静态变量等于全局变量。后来发现这个理解有点不全面了。最近学习C++.对这个静态变量有了更深的理解,在这里做一些补充。首先,C++中就是无非多了一个类的感念。其实类是非常容易理解的。就可以比喻成一个变量,前面多加了一个修饰符。所以不同类中的变量名字可以一样。但是在原创 2013-02-19 11:03:02 · 641 阅读 · 0 评论 -
蛇形矩阵
// test.cpp : 定义控制台应用程序的入口点。//// 图形.cpp : 定义控制台应用程序的入口点。#include using namespace std;#includeint a[20][20];int i,j;int count= 1;int step [4][2]={{1,0},{-1,1},{0,1},{1,-1}};//0、原创 2012-11-20 20:39:34 · 490 阅读 · 0 评论 -
BF/KMF char储存十六进制
#include #include #include #include #include#include #include using namespace std;char s[]=" ababcabcacbab";char t[]=" abcac";int BF (char s[],char t[]){ //assert(s[0]); //as原创 2012-10-30 20:49:00 · 563 阅读 · 0 评论 -
kruskal算法
kruskal算法其实也是和prim算法一样求无向图的最小生成树,也属于贪心算法,不过prim算法的复杂度为O(n^2),适用于稠密图,而kruskal算法的复杂度为O(eloge),适用于稀疏图。kruskal算法描述很容易理解,如下1.设连通网N=(V,{E}),令最小生成树初始状态为只有n个顶点而无边的非连通图T=(V,{F}),每个顶点自成一个连通分量2.在E中选取代价原创 2012-10-19 20:23:02 · 919 阅读 · 0 评论 -
poj 图论
转自http://blog.csdn.net/allenjy123/article/details/6627248红色已经AC一、最短路POJ 2449 Remmarguts' Date(中等)http://acm.pku.edu.cn/JudgeOnline/problem?id=2449题意:经典问题:K短路解法:dijkstra+A*(rec),方法很原创 2012-10-17 16:11:53 · 662 阅读 · 0 评论