
C/C++
文章平均质量分 86
_Tham
If you sleep now , you will hava a dream. But if you study now , you will achieve your dream.
展开
-
工程管理之makefile与自动创建makefile文件过程
作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便.一般情况下,大家都是手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了.在本文中,将给大家介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的 Makefile,这样就可以象常见的 GNU程序一原创 2016-03-27 15:28:13 · 3817 阅读 · 0 评论 -
C++ 继承与派生
继承的意义?使程序的设计更符合发展规律,即事物的发展是一个从低级到高级的发展过程,类的继承也是反映由原始的简单代码到丰富的高级代码的过程。它能帮助我们描述事物的层次关系,有效而精确的理解事物,理解事物直到本质。什么叫继承?(1)继承使类与类之间建立起一种上下级的层次关系(2)子类可以重复使用父类的操作和数据成员,子类可以声明新的属性和操作,还可以剔除不适合自己用途的父类操作。为原创 2015-03-30 22:45:18 · 835 阅读 · 0 评论 -
C++ 经典知识点面试题
1、指针的优点和缺点优点:灵活高效(1)提高程序的编译效率和执行速度(数组下标往下移时,需要使用乘法和加法,而指针直接使用++即可)(2)通过指针可使用主调函数和被调函数之间共享变量或数据结构,便于实现双向数据通讯。(3)可以实现动态的存储分配。(4)便于表示各种数据结构,如结构体,编写高质量的程序。缺点:容易出错(1)可能变成野指针,导致程序崩溃(2)内存泄露转载 2015-03-30 22:42:11 · 2055 阅读 · 0 评论 -
C++ 函数模板基础知识
为什么要引入模板:为了避免代码重复,程序员可以编写脱离数据类型通用模板。模板的分类:函数模板 + 类模板注意:模板的声明或定义只能在全局,命名空间或类范围内进行。不能在函数内进行,比如不能在main函数中声明或定义一个模板。函数模板:定义:函数模板:关键词在后两个字,模板:提供一类函数的抽象,以任意类型T为参数把具有相同程序正文的一类函数抽象出来,可以适合任意类型T的参数。原创 2015-03-30 22:29:44 · 789 阅读 · 0 评论 -
C++ 动态存储空间的分配和释放 new与malloc的区别
使用new申请空间:特点: 1、没有名字,只能通过指针间接访问它们。 2、从堆中申请空间分类:变量: 语法:指针变量 = new 类型名; Delete 指针变量 举例:int *p; p=new int;原创 2015-03-30 20:59:58 · 3504 阅读 · 0 评论 -
c++模板 与 泛型编程基础
泛型编程就是以独立于任何特定类型的方式编写代码,而模板是泛型编程的基础。(1)定义函数模板(function template)函数模板是一个独立于类型的函数,可以产生函数的特定类型版本。// implement strcmp-like generic compare functiontemplate int compare(const T &v1, const T &原创 2015-03-30 13:41:12 · 1432 阅读 · 0 评论 -
C++ 容器及选用总结
目录====================================================第一章 容器第二章 Vector和string第三章 关联容器第四章 迭代器第五章 算法第六章 函数第七章 在程序中使用STL====================================================第1章 容器第1条转载 2015-03-29 22:34:37 · 604 阅读 · 0 评论 -
c++ STL容器初探
什么是容器 首先,我们必须理解一下什么是容器,在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对像的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法,因为这些方法在程序的设计上会经常被用到,所以容器也体现了一个好处,就是“容器类是一种对特定代码重用问题的良好的解决方原创 2015-03-29 22:23:51 · 864 阅读 · 0 评论 -
C++ 类模板基础知识
类模板与模板类为什么要引入类模板:类模板是对一批仅仅成员数据类型不同的类的抽象,程序员只要为这一批类所组成的整个类家族创建一个类模板,给出一套程序代码,就可以用来生成多种具体的类,(这类可以看作是类模板的实例),从而大大提高编程的效率。注意:1、类模板是参数化的类,即用于实现数据类型参数化的类。2、应用类模板可以使类中的数据成员、成员函数的参数及成员函数的返回值,能根据模板参数匹配原创 2015-03-30 22:35:38 · 712 阅读 · 0 评论 -
C++ 指针悬挂和赋值操作符的重载,拷贝构造函数实现
指针悬挂:问题:使用new申请的内存内存空间无法访问,也无法释放。原因:直接对指向new申请的存储空间的指针变量进行赋值修改后果:失去了原来的地址,原来的空间无法访问也无法释放,造成内存泄漏 还可能造成同一个内存释放两次容易引起指针悬挂的方式:对象的初始化和对象间赋值容易引起指针悬挂的条件:类中含有指针类型的成员时,使用默认的拷贝构造函数和赋值函数都会原创 2015-03-30 22:21:24 · 1532 阅读 · 0 评论 -
MoreWindows 微软认证专家博客目录(白话算法,C++ STL,windows编程)
为了方便大家查找和学习,现将本人博客中所有博客文章列出目录。(http://blog.youkuaiyun.com/morewindows)一. 白话经典算法目前有17篇,分为七大排序和经典面试题讲解两大类1. 《白话经典算法系列之一 冒泡排序的三种实现》2. 《白话经典算法系列之二 直接插入排序的三种实现》3. 《白话经典算法系列之转载 2015-03-30 21:50:20 · 1325 阅读 · 0 评论 -
结构之法,算法之道:程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大系列集锦
程序员面试、算法研究、编程艺术、红黑树、数据挖掘5大经典原创系列集锦与总结(七月算法问答社区:http://ask.julyedu.com/)作者:July--结构之法算法之道blog之博主。时间:2010年10月-2014年12月。出处:http://blog.youkuaiyun.com/v_JULY_v 。声明:版权所有,侵犯必究。转载 2015-03-30 21:41:06 · 2070 阅读 · 0 评论 -
C++ 友元函数总结
1、为什么要引入友元函数:在实现类之间数据共享时,减少系统开销,提高效率 具体来说:为了使其他类的成员函数直接访问该类的私有变量 即:允许外面的类或函数去访问类的私有变量和保护变量,从而使两个类共享同一函数 优点:能够提高效率,表达简单、清晰 缺点:友元函数破环了封装机制,尽量不使用成员函数,除非不得已的情况下才使用友元函数。2、什么时候原创 2015-03-30 21:10:02 · 943 阅读 · 0 评论 -
C++ 引用 & 的详解
转载来自:优快云insistGoGo (http://blog.youkuaiyun.com/insistgogo/article/details/6655077)引用的应用:常引用:语法:[cpp] view plaincopyconst 类型 &引用名=目标变量名; 作用:防止通过引用对目标变量进行修改,达到了引用的安全性注意:是防止通过引用进转载 2015-03-30 22:51:31 · 793 阅读 · 0 评论 -
程序员必读书籍及部分图书导读指南
最近在网上看了一个非常好的帖子《程序员一生必读的书》, 这张图是由ThoughtWorks(全球软件设计与定制领域的领袖级企业)的资深人士提供的,它将程序员要读的书分为四个类别,每个类别又分为初级、进阶和高级读物,并用黄色三角形点出了强烈推荐阅读的书籍。四个类别包括:编程实践(Coding Practice)设计与架构(Design & Architecture)方法学(Methodolo转载 2015-03-28 18:32:45 · 1117 阅读 · 0 评论 -
c/c++中int main(int argc,char *argv[])的具体含义
int main(int argc,char * argv[])argv为指针的指针argc为整数 char **argv or: char *argv[] or: char argv[][]main()括号内是固定的写法。下面给出一个例子来理解这两个参数的用法:假设程序的名称为prog,当只输入prog,则由操作系统传来的参数为:argc=1,表示转载 2015-03-28 17:53:54 · 7232 阅读 · 0 评论 -
各大编程语言的特点/区别/类型系统
每学一门新的编程语言时,在看到介绍该门编程语言的特点时,经常会遇到 静态、动态、强、弱 、隐式、显式 类型等字样,似懂非懂,这里结合网上的资料总结一下它们的含义以及区别,描述不一定专业、准确,但求能进一步理解这些词的概念即可。类型系统(Type System)用于定义如何将编程语言中的数值和表达式归类为许多不同的类型,如何操作这些类型,这些类型如何互相作用。根据这些种种不同,可以将编程语言转载 2015-03-26 22:47:54 · 1396 阅读 · 0 评论 -
C++ 多态与虚函数
什么是多态?一个 “操作” 随着所 ”传递或捆绑的对象类型的不同 “ 能够做出 ”不同的反应“,其行为模式称为多态。即,对这个操作,能接受不同类型的参数,而且在处理参数时,会根绝其类型做出不同的反应。为什么要引入多态?针对由继承得到一类对象,在处理这类对象时,能够以同一操作处理完所有对象。遇到的问题:[cpp] view plaincopy#incl原创 2015-03-30 22:47:15 · 919 阅读 · 0 评论 -
C++ 多继承与虚基类
转载来自:优快云insistGoGo (http://blog.youkuaiyun.com/insistgogo)多继承的定义:派生类的基类大于一个语法:[cpp] view plaincopyclass 派生类名:继承方式1 基类名1,继承方式2 基类名2... { }; 多重继承与构造函数的关系:多重继承时构造函数的作用:1转载 2015-03-30 22:49:42 · 1277 阅读 · 0 评论 -
C++ STL中哈希表Map 与 hash_map 介绍
0 为什么需要hash_map用过map吧?map提供一个很常用的功能,那就是提供key-value的存储和查找功能。例如,我要记录一个人名和相应的存储,而且随时增加,要快速查找和修改:岳不群-华山派掌门人,人称君子剑张三丰-武当掌门人,太极拳创始人东方不败-第一高手,葵花宝典...这些信息如果保存下来并不复杂,但是找起来比较麻烦。例如我要找"张三丰"原创 2016-04-06 15:00:02 · 7985 阅读 · 2 评论 -
详细解说 STL 排序(Sort)
作者【C++ Programmer's Cookbook】详细解说 STL 排序(Sort)作者Winter详细解说 STL 排序(Sort)0 前言: STL,为什么你必须掌握1 STL提供的Sort 算法1.1 所有sort算法介绍1.2 sort 中的比较函数1.3 sort 的稳定性1.4 全排序1.5 局部排序1.6 nth_element 指转载 2016-04-05 16:21:30 · 795 阅读 · 0 评论 -
C++ Primer 与“类”有关的注意事项总结
C++ 与“类”有关的注意事项总结(一)1. 除了静态 static 数据成员外,数据成员不能在类体中被显式地初始化。例如 :class First{ int memi = 0; // 错误 double memd = 0.0; // 错误 };类的数据成员通过类的构造函数进行初始化。 2. 我们可以声明一个类但是并不定义它.例如原创 2015-09-21 10:17:44 · 991 阅读 · 0 评论 -
C语言一些基础知识
C语言输入输出的一些问题原创 2014-11-16 17:10:50 · 1172 阅读 · 0 评论 -
C++最快的读取文件的方案(scanf,cin(及取消sync),fread)的详细对比
竞赛中,遇到大数据时,往往读文件成了程序运行速度的瓶颈,需要更快的读取方式。相信几乎所有的C++学习者都在cin机器缓慢的速度上栽过跟头,于是从此以后发誓不用cin读数据。还有人说Pascal的read语句的速度是C/C++中scanf比不上的,C++选手只能干着急。难道C++真的低Pascal一等吗?答案是不言而喻的。一个进阶的方法是把数据一下子读进来,然后再转化字符串,这种方法传说中很不错,但转载 2014-08-30 14:45:26 · 5920 阅读 · 0 评论 -
哈希表(散列表)—Hash表解决地址冲突 C语言实现
哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。具体的介绍网上有很详细的描述,如闲聊哈希表 ,这里就不再累述了;哈希表在像Java、C#等语言中是与生俱来的。可是在C的世界中,似乎只有自己动手,丰衣足食;在网上google了一把,大致有几个版本,我会一一来分析原创 2014-10-17 14:13:43 · 5890 阅读 · 0 评论 -
KMP 解决串的模式匹配问题
KMP本身不复杂,但网上绝大部分的文章(包括本文的2011年版本)把它讲混乱了。下面,咱们从暴力匹配算法讲起,随后阐述KMP的流程 步骤、next 数组的简单求解 递推原理 代码求解,接着基于next 数组匹配,谈到有限状态自动机,next 数组的优化,KMP的时间复杂度分析,最后简要介绍两个KMP的扩展算法。 全文力图给你一个最为完整最为清晰的KMP,希望更多的人不再被KMP折磨或纠缠,不再被一些混乱的文章所混乱,有何疑问,欢迎随时留言评论,thanks。原创 2014-11-01 21:11:44 · 4939 阅读 · 1 评论 -
C++ map<key , value> key值为指针
STL中map的key能否用char *呢?当然可以!在程序中需要用到一个map,本来是这样写的,map mapStr;为了追求效率,把string改成了char *,map mapStr;结果呢?可想而知,每次放进去的是指针,当查找的时候就出问题了,总是找不到。因为key中存放的是指针,当然找不到了。需要重载一下操作符,当查找时比较指针对应转载 2015-04-13 21:24:25 · 10727 阅读 · 1 评论 -
C/C++ 和 PHP 技术经典图书,学习视频资料总结
Windows工具名称:VC..6.0含SP6中文版.英文版倾情 [VC..6.0含SP6中文版.英文版倾情共享].VC6SP6.ISO (485.26 MB)Visual.Studio.2010.简体中文旗舰版http://download.microsoft.com/do ... 10UltimTrialCHS.iso其它工具欢迎补充Linux工具主流L原创 2014-11-28 13:31:57 · 1945 阅读 · 0 评论 -
线性动态规划——解最长公共子序列问题
动态规划法经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加(分治思想,递归方法。往往会由于数据大导致递归层次过多而超时或爆栈,即使采用记忆化等优化策略,仍然可能解决不了问题)。原创 2014-10-28 17:41:45 · 1231 阅读 · 0 评论 -
STL之heap与优先级队列Priority Queue详解
一、heap heap并不属于STL容器组件,它分为 max heap 和min heap,在缺省情况下,max-heap是优先队列(priority queue)的底层实现机制。而这个实现机制中的max-heap实际上 是以一个vector表现的完全二叉树(complete binary tree)。STL在中实现了对 存储在vector/deque 中的原创 2015-03-24 10:56:49 · 3284 阅读 · 0 评论 -
C++ 随机数rand()和srand()
标准函数库中函数rand()可以生成0~RAND_MAX之间的一个随机数,其中RAND_MAX 是stdlib.h中定义的一个整数,它与系统有关。 例如在我的机器上,RAND_MAX=32767。可以使用 printf("%ld",RAND_MAX);查看。调用rand()可以生成一个随机数,但我们往往需要的是一个有上下界的随机数。例如 要产生一个[a,b]之间的随机整数xx = ra转载 2014-08-10 18:31:05 · 1822 阅读 · 0 评论 -
C++ 模板应用举例_模板实现STL类(堆栈)
//stack集合类是一个简单的堆栈的实现。 //这里有两个模板参数,T和size,指定堆栈中的元素类型和堆栈中项数的最大值。 //push 和 pop成员函数添加和删除堆栈中的项,并在堆栈底部增加。 #include #include #include using namespace std; templa原创 2015-03-30 22:37:00 · 1710 阅读 · 0 评论 -
(华中科大)江南雨烟 C++ STL 专栏
本文转载来自,华中科技大学江南雨烟的C/C++专栏部分STL剖析文章,以作学习之用。【1】 【C++ STL学习之一】容器的共通能力和共通操作总结【2】 【C++ STL学习之二】容器vector大总结【3】 【C++ STL学习之三】容器deque深入学习 【4】 【C++ STL学习之四】容器list深入学习【5】 【C+转载 2015-03-30 22:05:01 · 1711 阅读 · 0 评论 -
C++ 构造函数和析构函数
构造函数:作用: 1)分配空间:分配非静态数据成员的存储空间 2)初始化成员:初始化非静态数据成员分配空间: 1)含有指针变量,需要程序员显式申请空间(使用new申请) 2)非指针变量:由系统自动分配空间初始化成员: 1)使用赋值语句初始化:一般的变量 2)使用表达式表初始化:一般的变量 + Const成员,引用成员,对象成员调用时原创 2015-03-30 21:19:58 · 1210 阅读 · 0 评论 -
构造函数、析构函数与虚函数的关系
1、为什么构造函数不能是虚函数?因为:从使用上来说,虚函数是通过基类指针或引用来调用派生类的成员的,则在调用之前,对象必须存在,而构造函数是为了创建对象的。2、为什么在派生类中的析构函数常常为虚析构函数注意,默认不是析构函数一句话,是为了避免内存泄露如果不考虑虚函数的状况,给出一个基类和派生类,如果调用派生类的析构函数时,肯定会引发调用基类的析构函数,这和析构函数是不是虚函原创 2015-03-30 22:53:48 · 2565 阅读 · 0 评论 -
Linux 系统及编程相关知识总汇
Linux C function() 参考手册STL 学习文档Linux内核转载 2015-01-04 14:04:03 · 851 阅读 · 0 评论 -
makefile 必知必会以及Makefile是怎样炼成的
Makefile 必知必会Makefile的根本任务是根据规则生成目标文件。规则一条规则包含三个:目标文件,目标文件依赖的文件,更新(或生成)目标文件的命令。规则: 目标文件>:依赖文件> 更新目标的命令> PS:更新目标命令必须以tab开头,这个有点恶心。Exam转载 2014-11-25 09:21:05 · 760 阅读 · 0 评论 -
哈希排序
第一部分:Top K 算法详解问题描述百度面试题: 搜索引擎会通过日志文件把用户每次检索使用的所有检索串都记录下来,每个查询串的长度为1-255字节。 假设目前有一千万个记录(这些查询串的重复度比较高,虽然总数是1千万,但如果除去重复后,不超过3百万个。一个查询串的重复度越高,说明查询它的用户越多,也就是越热门。),请你统计最热门的10个查询串,要求使用的内存不能超过1转载 2014-10-06 22:29:20 · 8631 阅读 · 0 评论 -
十大编程算法
算法一:快速排序算法快速排序是由东尼·霍尔所发展的一种排序算法。在平均状况下,排序 n 个项目要Ο(n log n)次比较。在最坏状况下则需要Ο(n2)次比 较,但这种状况并不常见。事实上,快速排序通常明显比其他Ο(n log n) 算法更快,因为它的内部循环(inner loop)可以在大部分的架构 上很有效率地被实现出来。快速排序使用分治法(Divide and conquer转载 2014-09-02 16:32:48 · 680 阅读 · 0 评论 -
如何处理C++构造函数中的错误——兼谈不同语言的错误处理
用C++写代码的时候总是避免不了处理错误,一般来说有两种方式,通过函数的返回值或者抛出异常。C语言的错误处理一律是通过函数的返回值来判断的,一般是返回0、NULL或者-1表示错误,或者直接返回错误代码,具体是哪种方式没有统一的规定,各种API也各有各的偏好。譬如fopen函数,当成功时返回文件指针,失败时返回NULL,而POSIX标准的open函数则在成功时返回0或者正数,失败时返回-1,然后需要转载 2014-08-30 16:16:30 · 1121 阅读 · 0 评论