需要友元的原因及使用
摘要:有时候,普通函数需要直接访问一个类的保护或私有数据成员。如果没有友元机制,则只能将类的数据成员声明为公共的,从而,任何函数都可以无约束的访问它。普通函数需要直接访问类的保护或私有数据成员的原因主要是为提高效率。在类里声明一个普通函数,标上关键字friend,就成了该类的友元,可以访问该类的一切成员。需要友元的另一个原因是为了方便重载操作符的使用。友元函数不是成员函数,它是类的朋友,因而能够访问类的全部成员。在类的内部,只能声明它的函数原型,加上friend关键字。友元声明的位置可以在类的任何部位,既可在public区,也可在protected区,意义完全一样。友元函数定义则在类的外部,一般与类
阅读全文
posted @
2013-08-31 17:01
猿人谷
阅读(1971)
推荐(0) 编辑
数组和链表的区别
摘要:数组:数组是将元素在内存中连续存放,由于每个元素占用内存相同,可以通过下标迅速访问数组中任何元素。但是如果要在数组中增加一个元素,需要移动大量元素,在内存中空出一个元素的空间,然后将要增加的元素放在其中。同样的道理,如果想删除一个元素,同样需要移动大量元素去填掉被移动的元素。如果应用需要快速访问数据,很少或不插入和删除元素,就应该用数组。链表:链表恰好相反,链表中的元素在内存中不是顺序存储的,而是通过存在元素中的指针联系到一起。比如:上一个元素有个指针指到下一个元素,以此类推,直到最后一个元素。如果要访问链表中一个元素,需要从第一个元素开始,一直找到需要的元素位置。但是增加和删除一个元素对于链
阅读全文
posted @
2013-08-31 10:15
猿人谷
阅读(1054)
推荐(0) 编辑
2013华为校园招聘机试题9月10日题(杭州)
摘要:2013华为校园招聘机试题9月10日题(杭州):机试题目及解答来源:http://blog.chinaunix.net/uid-26868581-id-3334342.html题目部分: 1 /* 2 3 题目描述(60分): 4 通过键盘输入一串小写字母(a~z)组成的字符串。请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉。 5 比如字符串“abacacde”过滤结果为“abcde”。 6 7 要求实现函数: 8 void stringFilter(const char *pInputStr, long lInputLen, char *pOutpu...
阅读全文
posted @
2013-08-31 09:26
猿人谷
阅读(1291)
推荐(0) 编辑
很有挫败感
摘要:总会时不时的怀疑自己是不是学编程的料,还是自己太笨? 自己读研前对编程可以说是一窍不通,虽然本科时学过C,但那时也只是应付考试,没学到什么真才实学。 幸好读研后,自己开始猛的补各种知识,开始从头学C,慢慢的学的有点起色,心里有点小得瑟。自以为学的还可以,就去POJ做题,纯属找虐,信心一下子又重新跌倒谷底。 之后又再好好研究C,学一些普遍的算法,真正的开始有起色。就试着写写贪吃蛇,五子棋之类的小游戏,虽然写的过程也是百转千回各种纠结,但最后写成后内心还是挺温暖,觉得编程门终于向我开放了。 之后又开始自己装linux,学写linux下的一些常用指令以及一些编程,虽然不懂的很多,但遇到问题问度娘,.
阅读全文
posted @
2013-08-30 21:45
猿人谷
阅读(846)
推荐(1) 编辑
Linux下的C编程
摘要:1、程序的编译、运行2、进程3、文件4、时间5、信号6、消息7、线程8、网络1、程序的编译、运行简单的编译:gcc test.c运行:./a.out2、进程#include #include #include #include int main(int argc,char **argv) { pid_t my_pid,parent_pid; //进程id,进程的父进程id uid_t my_uid,my_euid; //用户id,有效用户id gid_t my_gid,my_egid; //组id,有效组id struct passwd *my_info; ...
阅读全文
posted @
2013-08-30 20:39
猿人谷
阅读(940)
推荐(0) 编辑
***经典笔试题
摘要:一、 C/C++程序设计1、i++ const sizeof 类型转换 字节对齐与填充2、动态内存/虚函数 函数指针3、 拷贝构造函数/赋值函数4、 单链表反转5、 打印100以内的素数6、 位运算与嵌入式编程二、算法分析1、 数组循环移位2、 求二进制中1的个数
阅读全文
posted @
2013-08-30 20:36
猿人谷
阅读(271)
推荐(0) 编辑
经典博客---《数据结构与算法》
摘要:1.http://www.cnblogs.com/JCSU/category/377626.html2.非常不错的博客。http://www.nowamagic.net/librarys/veda/detail/2241
阅读全文
posted @
2013-08-30 20:31
猿人谷
阅读(249)
推荐(0) 编辑
哈希表
摘要:来源:http://www.cnblogs.com/JCSU/articles/2028813.html/*******************************************************************************/*/*版权所有:-/*模块名:查找/*文件名:hash.cpp/*功能描述:哈希表/*作者:/*版本:1.0/*-----------------------------------------------------------------------------/*备注:用链地址法解决冲突/*------------------
阅读全文
posted @
2013-08-30 20:29
猿人谷
阅读(360)
推荐(0) 编辑
AVL树
摘要:来源:http://www.cnblogs.com/JCSU/articles/2026617.html/*******************************************************************************/*/*版权所有:-/*模块名:查找/*文件名:avlTree.cpp/*功能描述:平衡二叉树/*作者:/*版本:1.0/*-----------------------------------------------------------------------------/*备注:-/*---------------------
阅读全文
posted @
2013-08-30 20:27
猿人谷
阅读(348)
推荐(0) 编辑
二叉查找树
摘要:来源:http://www.cnblogs.com/JCSU/articles/2026482.html/*******************************************************************************/*/*版权所有:-/*模块名:查找/*文件名:bitreeSearch.cpp/*功能描述:二叉排序树/*作者:/*版本:1.0/*-----------------------------------------------------------------------------/*备注:-/*----------------
阅读全文
posted @
2013-08-30 20:26
猿人谷
阅读(384)
推荐(0) 编辑
线索二叉树
摘要:来源:http://www.cnblogs.com/JCSU/articles/2005967.html/*******************************************************************************/*/*版权所有:-/*模块名:树/*文件名:biThrTree.cpp/*功能描述:线索二叉树的表示与实现/*作者:/*版本:1.0/*-----------------------------------------------------------------------------/*备注:输入示例与输出结果/*/*e.g.
阅读全文
posted @
2013-08-30 20:24
猿人谷
阅读(510)
推荐(0) 编辑
二叉树非递归遍历
摘要:来源:http://www.cnblogs.com/JCSU/articles/2005944.html【bitree.cpp】/*******************************************************************************/*/*版权所有:-/*模块名:树/*文件名:bitree.cpp/*功能描述:二叉树的非递归遍历/*作者:/*版本:1.0/*-----------------------------------------------------------------------------/*备注:输入示例与输出结果/
阅读全文
posted @
2013-08-30 20:23
猿人谷
阅读(439)
推荐(0) 编辑
二叉树递归遍历
摘要:1 /* 模块名 : 树 2 /* 文件名 : btree.cpp 3 /* 功能描述 : 二叉树的递归遍历 4 5 /* 备注 : 输入示例与输出结果 6 /* e.g. input : ABD###CE#F### 7 /* bi-tree : 8 /* A 9 /* / \ 10 /* B C 11 /* / / 12 /* D E 13 /* ...
阅读全文
posted @
2013-08-30 20:21
猿人谷
阅读(703)
推荐(0) 编辑
串匹配
摘要:1 /******************************************************************************* 2 /* 3 /* 版权所有 : - 4 /* 模块名 : 串 5 /* 文件名 : string.cpp 6 /* 功能描述 : 串的模式匹配 7 /* 作者 : 8 /* 版本 : 1.0 9 /* -------------------------------------------------------------------------...
阅读全文
posted @
2013-08-30 20:10
猿人谷
阅读(366)
推荐(0) 编辑
顺序循环队列
摘要:1 //循环队列的顺序存储表示与实现 2 3 #include 4 #include 5 6 /****************************************************************************** 7 /* 数据类型和常量定义 8 /******************************************************************************/ 9 #define OK 110 #define ERROR 011 #define OVERFLOW ...
阅读全文
posted @
2013-08-30 20:00
猿人谷
阅读(655)
推荐(0) 编辑
高质量软件开发之道
摘要:1. 学习"高质量编程"的目的是要在干活的时候一次性编写出高质量的程序,而不是当程序出错后再去修补2. 十大软件质量属性包括:正确性(Correctness): 指软件按照需求正确执行任务的能力。正确性是第一重要的软件质量属性。健壮性(Robustness): 指在异常情况下,软件能够正常运行。健壮性包括容错能力和恢复能力。可靠性(Reliability): 指在一定环境下,在给定的时间内,系统不发生故障的概率。性能(Performance): 通常是指软件的时空效率。程序员可通过优化数据结构、算法和代码来提高软件的性能。易用性(Usability): 指用户使用软件的容易
阅读全文
posted @
2013-08-30 19:42
猿人谷
阅读(1327)
推荐(0) 编辑
进制之间的转换
摘要:今天翻了一本计算机基础的书籍,其中十进制、二进制、八进制、十六进制之间的转换挺有意思的,也容易犯糊涂,特温故而知新。十进制数制系统十进制数制系统包括10个数字:0、1、2、3、4、5、6、7、8、9基为:10逢十进一,如3+7=10,20+80=100二进制数制系统计算机中使用二进制表示数据二进制包括两个符号:0和1二进制逢二进一:(1+1)2=(10)2二进制的基为2示例:1000101100101101八进制数制系统用于缩短二进制的数字长度八进制基是8,使用的符号为:0、1、2、3、4、5、6、7逢八进一,即(7+1)8=(10)8十六进制数制系统十六进制数制系统的基是16十进制:0、1、
阅读全文
posted @
2013-08-27 16:50
猿人谷
阅读(1408)
推荐(0) 编辑
Hanoi塔问题
摘要:说明:河内之塔(Towers of Hanoi)是法国人M.Claus(Lucas)于1883年从泰国带至法国的,河内为越战时北越的首都,即现在的胡志明市;1883年法国数学家 Edouard Lucas曾提及这个故事,据说创世纪时Benares有一座波罗教塔,是由三支钻石棒(Pag)所支撑,开始时神在第一根棒上放置64个由上至下依由小至大排列的金盘(Disc),并命令僧侣将所有的金盘从第一根石棒移至第三根石棒,且搬运过程中遵守大盘子在小盘子之下的原则,若每日仅搬一个盘子,则当盘子全数搬运完毕之时,此塔将毁损,而也就是世界末日来临之时。解法:如果柱子标为ABC,要由A搬至C,在只有一个盘子时,
阅读全文
posted @
2013-08-25 12:22
猿人谷
阅读(471)
推荐(0) 编辑
struct 与 typedef struct
摘要:1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。 至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。2. typedef & 结构的问题 当用下面的代码定义一个结构时,编译器报了一个错误,为什么呢?莫非C语言不允许在结构中包含指向它自己的指针吗?请你先猜想一下,然后看下文说明:typedef struct tagNode{
阅读全文
posted @
2013-08-23 18:48
猿人谷
阅读(4009)
推荐(0) 编辑
(重点)链式栈
摘要:顺序栈的实现在于使用了数组这个基本数据结构,数组中的元素在内存中的存储位置是连续的,且编译器要求我们在编译期就要确定数组的大小,这样对内存的使用效率并不高,一来无法避免因数组空间用完而引起的溢出问题,二在系统将内存分配给数组后,则这些内存对于其他任务就不可用。而对于链式栈而言,使用了链表来实现栈,链表中的元素存储在不连续的地址,由于是动态申请内存,所以我们可以以非常小的内存空间,另外当某个项目不使用时也可将内存返还给系统。顺序栈是用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时由于栈的操作的特殊性,还必须附设一个位置指针top(栈顶指针)来动态地指示栈顶
阅读全文
posted @
2013-08-22 08:59
猿人谷
阅读(764)
推荐(0) 编辑
单链表
摘要:来源:http://blog.csdn.net/hopeyouknow/article/details/6711216[cpp] view plaincopy#ifndefList_H#defineList_HtypedefintItem;/*定义数据项类型*/typedefstructnode*PNode;/*定义节点指针*/typedefstructnode/*节点的定义*/{Itemitem;/*数据域*/PNodenext;/*链域*/}Node;typedefPNodePosition;typedefPNodeList;ListMakeEmpty(ListL);/*功能生成空链表L*
阅读全文
posted @
2013-08-21 14:48
猿人谷
阅读(473)
推荐(1) 编辑
双向链表
摘要:来源:http://blog.csdn.net/hopeyouknow/article/details/6716177首先编写头文件,头文件里做相关的定义和声明,DList.h内容如下:[cpp] view plaincopy#ifndefDList_H#defineDList_HtypedefintItem;typedefstructNode*PNode;typedefPNodePosition;/*定义节点类型*/typedefstructNode{Itemdata;/*数据域*/PNodeprevious;/*指向前驱*/PNodenext;/*指向后继*/}Node;/*定义链表类型*
阅读全文
posted @
2013-08-21 14:44
猿人谷
阅读(478)
推荐(0) 编辑
最基本的二叉树
摘要:来源:http://blog.csdn.net/hopeyouknow/article/details/6740616?reload一个最基本的二叉树~~头文件BiTree.h[cpp] view plaincopytypedefintItem;typedefstructnode{structnode*lchild;structnode*rchild;Itemdata;}BiTNode,*BiTree;/*构造一棵新的二叉树*/BiTreeInitBiTree(BiTNode*root);/*生成节点*/BiTNode*MakeNode(Itemitem,BiTNode*lchild,BiTN
阅读全文
posted @
2013-08-21 14:41
猿人谷
阅读(546)
推荐(0) 编辑
链队列
摘要:来源:http://blog.csdn.net/hopeyouknow/article/details/6736987队列也是常用的数据结构之一,下面给出一个链式队列的实现~~头文件Queue.h[cpp] view plaincopy#ifndefQueue_H#defineQueue_HtypedefintItem;typedefstructnode*PNode;typedefstructnode{Itemdata;PNodenext;}Node;typedefstruct{PNodefront;PNoderear;intsize;}Queue;/*构造一个空队列*/Queue*InitQ
阅读全文
posted @
2013-08-21 14:38
猿人谷
阅读(499)
推荐(0) 编辑
链式栈
摘要:来源:http://blog.csdn.net/hopeyouknow/article/details/6725049栈是常用的数据结构之一,下面给出一个链式栈的实现~~头文件Stack.h[cpp] view plaincopy#ifndefStack_H#defineStack_HtypedefintItem;typedefstructnode*PNode;/*定义栈节点类型*/typedefstructnode{Itemdata;PNodedown;}Node;/*定义栈类型*/typedefstructstack{PNodetop;intsize;}Stack;/*构造一个空栈*/St
阅读全文
posted @
2013-08-21 14:37
猿人谷
阅读(607)
推荐(0) 编辑
C++ STL算法系列6---copy函数
摘要:现在我们来看看变易算法。所谓变易算法(Mutatingalgorithms)就是一组能够修改容器元素数据的模板函数,可进行序列数据的复制,变换等。我们现在来看看第一个变易算法:元素复制算法copy。该算法主要用于容器之间元素的拷贝,即将迭代器区间[first,last)的元素复制到由复制目 标result给定的区间[result,result+(last-first))中。下面我们来看看它的函数原型:1 template 2 OutputIterator copy( 3 InputIterator _First, 4 Inp...
阅读全文
posted @
2013-08-17 21:19
猿人谷
阅读(22835)
推荐(1) 编辑
C++ STL算法系列5---equal() , mismatch()
摘要:equal和mismatch算法的功能是比较容器中的两个区间内的元素。这两个算法各有3个参数first1,last1和first2.如果对 于区间[first1,last1)内所有的first1+i,first1+i和first2所在位置处的元素都相等,则equal算法返回真,否则返 回假。mismatch算法的返回值是由两个迭代器first1+i和first2+i组成的一个pair,表示第1对不相等的元素的位置。如果没有找到 不相等的元素,则返回last1和first2+(last1-first1)。因此,语句equal(first1,last1,first2)和mismatch(first
阅读全文
posted @
2013-08-17 17:04
猿人谷
阅读(3039)
推荐(0) 编辑
C++ STL知识点小结
摘要:1.capacity(容量)与size(长度)的区别。size(长度)指容器当前拥有的元素个数。capacity(容量)指容器在必须分配新存储空间之前可以存储的元素总数。
阅读全文
posted @
2013-08-17 16:41
猿人谷
阅读(680)
推荐(0) 编辑
C++ STL编程轻松入门基础
摘要:C++ STL编程轻松入门基础1 初识STL:解答一些疑问1.1 一个最关心的问题:什么是STL1.2 追根溯源:STL的历史1.3 千丝万缕的联系1.4 STL的不同实现版本2 牛刀小试:且看一个简单例程2.1 引子2.2 例程实作2.3 历史的评价2.4 如何运行作为C++标准不可缺少的一部分,STL应该是渗透在C++程序的角角落落里的。STL不是实验室里的宠儿,也不是程序员桌上的摆设,她的激动人心 并非昙花一现。本教程旨在传播和普及STL的基础知识,若能借此机会为STL的推广做些力所能及的事情,到也是件让人愉快的事情。1 初识STL:解答一些疑问1.1 一个最关心的问题:什么是STL&q
阅读全文
posted @
2013-08-17 15:27
猿人谷
阅读(1563)
推荐(0) 编辑
C++ STL疑惑知识点
摘要:1.remove的问题用法参考:http://www.cnblogs.com/heyonggang/p/3263568.html参考:http://zhidao.baidu.com/question/458494170.html2.用find搜索数组中是否存在某个值参考:http://www.cnblogs.com/heyonggang/p/3241789.html由于指针的行为与作用在内置数组上的迭代器一样,因此也可以使用find来搜索数组:1 int ia[6] = {27 , 210 , 12 , 47 , 109 , 83};2 int search_value = 83;3 int
阅读全文
posted @
2013-08-17 15:08
猿人谷
阅读(580)
推荐(0) 编辑
size_type、size_t、differentce_type以及ptrdiff_t
摘要:目录(?)[-]size_typesize_tdifferent_typeptrdiff_tsize_t是unsigned类型,用于指明数组长度或下标,它必须是一个正数,std::size_tptrdiff_t是signed类型,用于存放同一数组中两个指针之间的差距,它可以使负数,std::ptrdiff_t.size_type是unsigned类型,表示容器中元素长度或者下标,vector::size_type i = 0;difference_type是signed类型,表示迭代器差距,vector:: difference_type = iter1-iter2.前二者位于标准类库std内
阅读全文
posted @
2013-08-17 14:58
猿人谷
阅读(1299)
推荐(0) 编辑
题目1003:A+B ---c_str(),atoi()函数的使用;remove , erase函数的使用
摘要:1 #include 2 #include 3 int sw(char *a){ 4 int i=0,c=0; 5 while(a[i]){ 6 if(a[i]>='0'&&a[i] 2 #include 3 #include 4 using namespace std; 5 int main(){ 6 //freopen("a.txt","r",stdin); 7 char inA[20]={0}; 8 char inB[20]={0}; 9 while(cin>...
阅读全文
posted @
2013-08-17 14:15
猿人谷
阅读(1185)
推荐(0) 编辑
字符串中符号的替换---replace的用法
摘要:1 #include 2 #include 3 4 using namespace std; 5 6 int main() 7 { 8 string s1 = "one*two*three";//Given String 9 string s2 = "*";//delimeter10 string s3 = ",";//string to replace11 12 cout ::iterator IterF0, IterL0; IterF0 = s.begin ( ); IterL0 = s.b...
阅读全文
posted @
2013-08-17 11:06
猿人谷
阅读(7367)
推荐(0) 编辑
A+B for Matrices 及 C++ transform的用法
摘要:题目大意:给定两个矩阵,矩阵的最大大小是M*N(小于等于10),矩阵元素的值的绝对值小于等于100,求矩阵相加后全0的行以及列数。 1 #include 2 using namespace std; 3 #define N 10 4 5 int main() 6 { 7 int n,m,i,j,a[N][N],b[N][N],s; 8 while(cin>>m) 9 { if(m==0) break;10 cin>>n;11 for(i=0;i>a[i][j];14 for(i=0;i>b[i][j]; 17 ...
阅读全文
posted @
2013-08-16 20:36
猿人谷
阅读(1164)
推荐(0) 编辑
二维数组的查找
摘要:题目:在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 当我们需要解决一个复杂的问题时,一个很有效的办法就是从一个具体的问题入手,通过分析简单具体的例子,试图寻找普遍的规律。针对这个问题,我们不妨也从一个具体的例子入手。下面我们以在题目中给出的数组中查找数字7为例来一步步分析查找的过程。 我们发现如下规律:首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数字,剔除这个数字所在的列;如果该数字小于要查找的数字,剔除这个数字所在的行。也就
阅读全文
posted @
2013-08-16 14:31
猿人谷
阅读(828)
推荐(0) 编辑
实现两个N*N矩阵的乘法,矩阵由一维数组表示
摘要:实现两个N*N矩阵的乘法,矩阵由一维数组表示。先介绍一下矩阵的加法:1 void Add(int rows, int cols) 2 { 3 for(int i= 0;iusingnamespacestd;#definesize2intmulti(int*a,int*b,intN){inti,j,k,temp;int*c=(int*)malloc(N*N);for(i=0;i<N;i++){for(j=0;j<N;j++){temp=i*N+j;*(c+temp)=0;for(k=0;k<N;k++){*(c+temp)+=a[i*N+k]*b[k*N+j];...
阅读全文
posted @
2013-08-16 14:29
猿人谷
阅读(3231)
推荐(0) 编辑
C++/C#面试题
摘要:题目(一):我们可以用static修饰一个类的成员函数,也可以用const修饰类的成员函数(写在函数的最后表示不能修改成员变量,不是指写在前面表示返回值为常量)。请问:能不能同时用static和const修饰类的成员函数?分析:答案是不可以。C++编译器在实现const的成员函数的时候为了确保该函数不能修改类的实例的状态,会在函数中添加一个隐式的参数const this*。但当一个成员为static的时候,该函数是没有this指针的。也就是说此时static的用法和static是冲突的。我们也可以这样理解:两者的语意是矛盾的。static的作用是表示该函数只作用在类型的静态变量上,与类的实例没
阅读全文
posted @
2013-08-16 10:31
猿人谷
阅读(537)
推荐(0) 编辑
数组与指针
摘要:一、数组 数组是由类型名、标识符和维数组成的复合数据类型,类型名规定了存放在数组中的元素类型,维数则指定数组中包含的元素个数。 数组的维数必须用值大于等于1的常量表达式定义。此常量表达式只能包含整型字面值常量、枚举常量或者用常量表达式初始化的整型const对象。非const变量以及要到运行阶段才知道其值的const变量都不能用于定义数组的维数。C++虽然不允许定义长度为0的数组变量,但明确指出,调用new动态创建长度为0的数组是合法的。 1、数组的长度是固定的,与vector类型不同,数组不提供push_back或者其他的操作在数组中添加新元素。如果必须添加新元素,程序员必须自己管理内...
阅读全文
posted @
2013-08-15 20:25
猿人谷
阅读(500)
推荐(0) 编辑
标准库类型
摘要:一.标准string类型 string类型支持长度可变的字符串,C++标准库将负责管理与存储字符相关的内存,以及提供各种有用的操作。1.1 string对象的定义和初始化 当没有明确指定对象初始化时,系统将使用默认构造函数。 注意:编程时一定要注意区分字符串字面值和string数据类型的使用。1.2 string对象的读写 1. string类型的输入操作符:读取并忽略开头所有的空白字符(如空格、换行符、制表符)。读取字符直至再次遇到空白字符,读取终止。 2.读入未知书目的string对象: string word; // read until end-of-file , writi...
阅读全文
posted @
2013-08-15 16:03
猿人谷
阅读(1226)
推荐(2) 编辑
《C++ primer》--第1,2章小结
摘要:来源:http://blog.csdn.net/wangqiulin123456/article/details/84838531、变量初始化: 定义变量时,应该给变量赋初始值,除非确定将变量用于其他意图之前会覆盖这个初值。如果不能保证读取变量之前重置变量,就应该初始化变量。变量的初始化如下:[cpp] view plaincopyprint?intval1=0;//初始化intval2;//未初始化2、编译器的部分功能: 查错语法错误类型错误声明错误 3、从键盘输入文件结束符 OS使用不同的值作为文件结束符。Windows系统下通过输入Ctl+z来输入文件结束符,Unix中通常是Ctl...
阅读全文
posted @
2013-08-15 10:11
猿人谷
阅读(447)
推荐(0) 编辑
用标准C编写COM(一)
摘要:cdllbufferstruct编译器微软目录(?)[-]简介COM对象和虚表GUIDQueryInterfaceAddRef and ReleaseIClassFactory对象打包到DLL中CC包含文件定义文件DEF安装DLL和注册对象C实例程序C实例程序修改代码接下来是什么 转载:http://blog.csdn.net/wangqiulin123456/article/details/8092358原文:http://www.codeproject.com/Articles/13601/COM-in-plain-C 如何在不使用MFC、ATL、WTL或其他框架下使用标准C来创...
阅读全文
posted @
2013-08-14 21:31
猿人谷
阅读(687)
推荐(0) 编辑
C++ 模板学习
摘要:1. 模板的概念。我们已经学过重载(Overloading),对重载函数而言,C++的检查机制能通过函数参数的不同及所属类的不同。正确的调用重载函数。例如,为求两个数的最大值,我们定义MAX()函数需要对不同的数据类型分别定义不同重载(Overload)版本。//函数1.int max(int x,int y);{return(x>y)?x:y ;}//函数2.float max( float x,float y){return (x>y)? x:y ;}//函数3.double max(double x,double y){return (c>y)? x:y ;}但如果在主
阅读全文
posted @
2013-08-14 21:00
猿人谷
阅读(555)
推荐(0) 编辑
C++重要知识点小结---3
摘要:C++重要知识点小结---1:http://www.cnblogs.com/heyonggang/p/3246631.htmlC++重要知识点小结---2:http://www.cnblogs.com/heyonggang/p/3253036.html1.什么是智能指针?智能指针是一个行为类似指针但也提供其他功能的类。智能指针类实现普通指针行为的类的区别在于:智能指针通常接收指向动态分配对象的指针并负责删除该对象。用户分配对象,但由智能指针类删除它,因此智能指针类需要实现复制控制成员来管理指向共享对象的指针。只有在撤销了指向共享对象的最后一个智能指针后,才能删除该共享对象。使用计数是实现智能指
阅读全文
posted @
2013-08-14 17:03
猿人谷
阅读(1002)
推荐(0) 编辑
C++容器和算法
摘要:转自:http://www.cnblogs.com/haiyupeter/archive/2012/07/29/2613145.html容器:某一类型数据的集合。C++标准顺序容器包括:vector,list,queue容器初始化 vector t; for (int i = 0; i c; // 空容器 vector c1(t); // 容器t的副本 vector c2(3, 4); // 3个值为4的容器 vector c3(t.begin(), t.end() - 10); // 容器t的begin()和end()-...
阅读全文
posted @
2013-08-14 14:39
猿人谷
阅读(2602)
推荐(0) 编辑
C++模板知识小结
摘要:模板定义:模板就是实现代码重用机制的一种工具,它可以实现类型参数化,即把类型定义为参数, 从而实现了真正的代码可重用性。模版可以分为两类,一个是函数模版,另外一个是类模版。由于类模板包含类型参数,因此又称为参数化的类。如果说类是对象的抽象,对象是类的实例,则类模板是类的抽象,类是类模板的实例。1.模板的概念模板定义函数模板:template T fun_name(const T&, const T&);类模板:template class class_name { public: T t; void test(const T& t); }模板规则类模板作用域...
阅读全文
posted @
2013-08-14 14:37
猿人谷
阅读(658)
推荐(1) 编辑
经典C语言面试题
摘要:1.gets()函数问:请找出下面代码里的问题:#includeintmain(void){charbuff[10];memset(buff,0,sizeof(buff));gets(buff);printf("\nThebufferenteredis[%s]\n",buff);return0;}答:上面代码里的问题在于函数gets()的使用,这个函数从stdin接收一个字符串而不检查它所复制的缓存的容积,这可能会导致缓存溢出。这里推荐使用标准函数fgets()代替。2.strcpy()函数问:下面是一个简单的密码保护功能,你能在不知道密码的情况下将其破解吗?#includ
阅读全文
posted @
2013-08-14 14:33
猿人谷
阅读(475)
推荐(0) 编辑
转载:50个C/C++源代码网站
摘要:来源:http://www.cnblogs.com/feisky/archive/2010/03/05/1679160.htmlC/C++是最主要的编程语言。这里列出了50名优秀网站和网页清单,这些网站提供c /c++源代码 。这份清单提供了源代码的链接以及它们的小说明。我已尽力包括最佳的C/C++源代码的网站。这不是一个完整的清单,您有建议可以联系我,我将欢迎您的建 议,以进一步加强这方面的清单。添加:http://www.boost.org/1、http://snippets.dzone.com/tag/c/--数以千计的有用的C语言源代码片段2、http://www.hotscripts
阅读全文
posted @
2013-08-14 14:21
猿人谷
阅读(743)
推荐(1) 编辑
Effective c++ 小结
摘要:来源:http://www.cnblogs.com/feisky/archive/2009/11/04/1595990.html最近又重新看了Effective C+,不过到现在还是有好多地方不懂的,先记下笔记,待用的时候再细细琢磨。条款1:尽量用const和inline而不用#define这个条款最好称为:“尽量用编译器而不用预处理”,因为#define经常被认为好象不是语言本身的一部分。用 const的好处是,调试时,可以直接获取变量,而非定义的数字,这个在使用gdb跟踪代码的时候很有用,比如#define NUM 123;如果在gdb中print NUM,会出现NUM找不到符号表的问题,
阅读全文
posted @
2013-08-14 14:19
猿人谷
阅读(504)
推荐(0) 编辑
C++模板实例掌握
摘要:前段时间重新学习C++,主要看C++编程思想和C++设计新思维。对模版的使用有了更进一层的了解,特总结如下:下面列出了模版的常用情况://1. 模板类静态成员template struct testClass { staticint _data; }; templateint testClass::_data =1; templateint testClass::_data =2; int main( void ) { cout ::_data) ::_data) struct testClass { testClass() { cout struct testClass{ testC...
阅读全文
posted @
2013-08-14 14:13
猿人谷
阅读(496)
推荐(0) 编辑
C++ 虚拟继承
摘要:1.为什么要引入虚拟继承虚拟继承是多重继承中特有的概念。虚拟基类是为解决多重继承而出现的。如:类D继承自类B1、B2,而类B1、B2都继 承自类A,因此在类D中两次出现类A中的变量和函数。为了节省内存空间,可以将B1、B2对A的继承定义为虚拟继承,而A就成了虚拟基类。实现的代码如 下:class Aclass B1:public virtual A;class B2:public virtual A;class D:public B1,public B2;虚拟继承在一般的应用中很少用到,所以也往往被忽视,这也主要是因为在C++中,多重继承是不推荐的,也并不常用,而一旦离开了多重继承,虚拟继承就
阅读全文
posted @
2013-08-13 15:03
猿人谷
阅读(15640)
推荐(2) 编辑
C++重要知识点小结---2
摘要:C++重要知识点小结--1 :http://www.cnblogs.com/heyonggang/p/3246631.html1.C++允许程序员声明一个不能有实例对象的类,这样的类惟一的用途是被继承。这种类成为抽象类。一个抽象类至少具有一个纯虚函数。所谓纯虚函数是指被标明为不具体实现的虚成员函数。如:virtual void WithDrawal(float amount) = 0; //纯虚函数在WithDrawal()的声明之后的“=0”表明程序员将不定义该函数。该声明是为派生类而保留的位置。一个抽象类不能有实例对象,即不能由该类抽象来制造一个对象。纯虚函数是在基类中为子类保留的一个位.
阅读全文
posted @
2013-08-12 15:39
猿人谷
阅读(5696)
推荐(0) 编辑
静态成员函数和非静态成员函数的区别?
摘要:一个静态成员函数不与任何对象相联系,故不能对非静态成员进行默认访问。它们的根本区别在于静态成员函数没有this指针,而非静态成员函数有一个指向当前对象的指针this。例如: 1 class Sc 2 { 3 public: 4 void nsfn(int a); //像声明Sc::nsfn(Sc *this , int a); 5 static void sfn(int a); // 无this指针 6 //.... 7 }; 8 9 void f(Sc &s)10 {11 s.nsfn(10); // 转换为Sc::nsfn(&s , 10)12 ...
阅读全文
posted @
2013-08-12 10:58
猿人谷
阅读(12865)
推荐(0) 编辑
C语言指针5分钟教程
摘要:指针、引用和取值什么是指针?什么是内存地址?什么叫做指针的取值?指针是一个存储计算机内存地址的变量。在这份教程里“引用”表示计算机内存地址。从指针指向的内 存读取数据称作指针的取值。指针可以指向某些具体类型的变量地址,例如int、long和double。指针也可以是void类型、NULL指针和未初始 化指针。本文会对上述所有指针类型进行探讨。根据出现的位置不同,操作符 * 既可以用来声明一个指针变量,也可以用作指针的取值。当用在声明一个变量时,*表示这里声明了一个指针。其它情况用到*表示指针的取值。&是地址操作符,用来引用一个内存地址。通过在变量名字前使用&操作符,我们可以得到
阅读全文
posted @
2013-08-10 21:27
猿人谷
阅读(714)
推荐(1) 编辑
C++内存管理学习堆和栈
摘要:来源:http://c.chinaitlab.com/basic/936306_2.html 一 C++内存管理1.内存分配方式 在讲解内存分配之前,首先,要了解程序在内存中都有什么区域,然后再详细分析各种分配方式。1.1 C语言和C++内存分配区 下面的三张图,图1图2是一种比较详细的C语言的内存区域分法。图3是典型的C++内存分布图,简单易懂;以下内存分配图,区别就是图1和2则分为初始化和未初始化静态变量区,图3中是全局变量区。 C语言(图1和图2):(由低地址到高地址) a)正文段:用来存放程序执行代码。通常,正文段是可共享的。另外,正文段常常是只读的,一次防止程序由于意外修改其...
阅读全文
posted @
2013-08-10 16:15
猿人谷
阅读(3920)
推荐(3) 编辑
C++中引用的本质是什么?
摘要:一般的教材上讲到引用时,都是说“引用是对象的一个别名”。我认为这种定义是不清晰的,不利于初学者理解引用。至少我自己曾经被这个定义困扰了一段时间。到底什么是“别名”? 实际上,引用的实质是位于xxxxxx地址上的一个xxxx类型的对象。比如教科书上常用的例子: int a = 5; //不妨假设编译器将a分配到0x400000 int &b = a; 这里面b的准确意义就是,放在0x400000地址上的一个int类型对象。这里面包括了两重含义,首先b是一个int类型对象,因此他的使用完全与 int类型对象一样。另外这个int类型对象的地址是0x400000,因此从底层来看,它具有指针的一
阅读全文
posted @
2013-08-10 15:55
猿人谷
阅读(4544)
推荐(1) 编辑
C++ primer里的template用法
摘要:来源:http://c.chinaitlab.com/cc/ccjq/200806/752604_2.html-- template 的用法 在程序设计当中经常会出现使用同种数据结构的不同实例的情况。例如:在一个程序中 可以使用多个队列、树、图等结构来组织数据。同种结构的不同实例,也许只在数据元素 的类型或数量上略有差异,如果对每个实例都重新定义,则非常麻烦且容易出错。那么能 否对同种类型数据结构仅定义一次呢?答案是肯定的,C++提供的类模板(Class Template )就可以实现该功能。 一、类模板 类模板是C++提供的一种特殊机制,通过它我们可以定义一种特殊的类(称为模板类),在类 的
阅读全文
posted @
2013-08-10 15:44
猿人谷
阅读(958)
推荐(0) 编辑
六种排序的C++实现
摘要:classSortNum{public:SortNum();virtual~SortNum();voidexchange(int&b,int&c);//交换数据voidlistout(inta[],intn);//列出所有voidselectSort(inta[],intn);//选择voidbublbleSort(inta[],intn);//冒泡voidinsertSort(inta[],intn);//插入voidbaseSort(inta[],intn);//基数voidquickSort(inta[],intn,intleft,intright);//快速voidMe
阅读全文
posted @
2013-08-10 15:34
猿人谷
阅读(727)
推荐(0) 编辑
C++拷贝构造函数
摘要:拷贝构造函数,是一种特殊的构造函数,它由编译器调用来完成一些基于同一类的其他对象的构建及初始化。其唯一的参数(对象的引用)是不可变的(const类型)。此函数经常用在函数调用时用户定义类型的值传递及返回。拷贝构造函数要调用基类的拷贝构造函数和成员函数。如果可以的话,它将用常量方式调用,另外,也可以用非常量方式调用。调用拷贝构造函数的情形在C++中,下面三种对象需要调用拷贝构造函数(有时也称“复制构造函数”):1) 一个对象作为函数参数,以值传递的方式传入函数体;2) 一个对象作为函数返回值,以值传递的方式从函数返回;3) 一个对象用于给另外一个对象进行初始化(常称为复制初始化); 如果在前两.
阅读全文
posted @
2013-08-10 14:58
猿人谷
阅读(2338)
推荐(0) 编辑
C++重要知识点小结---1
摘要:1.C++中类与结构的唯一区别是:类(class)定义中默认情况下的成员是private的,而结构(struct)定义中默认情况下的成员是public的。2. ::叫作用域区分符,指明一个函数属于哪个类或一个数据属于哪个类。::可以不跟类名,表示全局数据或全局函数(即非成员函数)。3.类名加载成员函数名之前而不是加在函数的返回类型前。错误:Tdate::void Set(int m , int d , int y) {}正确: void Tdate::Set(int m , int d , int y) {}4.一个类对象所占据的内存空间由它的数据成员所占据的空间总和所决定。类的成员函数不占据
阅读全文
posted @
2013-08-08 20:57
猿人谷
阅读(19826)
推荐(2) 编辑
《C++ primer》--第12章
摘要:习题12.7 什么是封装?为什么封装是有用的?解答:封装是一种将低层次的元素组合起来形成新的、高层次实体的技术。例如,函数是封装的一种形式:函数所执行的细节行为被封装在函数本身这个更大的实体中;类也是一个封装的实体:它代表若干成员的聚集,大多数(良好设计的)类类型隐藏了实现该类型的成员。封装隐藏了内部元素的实现细节(例如,可以调用一个函数但不能访问它所执行的语句),其主要优点在于:避免类内部出现无意的、可能破坏对象状态的用户级错误;使得在修改类的实现时只要保持类的接口不变,就无需改变用户级代码。因此,封装是有用的。
阅读全文
posted @
2013-08-08 17:15
猿人谷
阅读(414)
推荐(0) 编辑
windows远程连接linux桌面---使用tightvnc或者tigervnc
摘要:一、安装tightvnc: tightvnc的安装在安装包中有详细的说明(README文件) 首先你要确保linux已经安装jpeg和zlib库, 2、编译执行如下两个命令:[root@localhost vnc_unixsrc]xmkmf[root@localhost vnc_unixsrc]make World可分别在其下的四个目录中获得四个文件。第一个为静态库,后三个为x86平台的二进制执行程序。vncvviewer为x86-linux平台的client端程序。vncpasswd用于server侧建立密码,vncconnect为server和client二者连接之用。vnc_unixsr
阅读全文
posted @
2013-08-08 14:47
猿人谷
阅读(4786)
推荐(0) 编辑
三十分钟掌握STL
摘要:这是本小人书。原名是《using stl》,不知道是谁写的。不过我倒觉得很有趣,所以化了两个晚上把它翻译出来。我没有对翻译出来的内容校验过。如果你没法在三十分钟内觉得有所收获,那么赶紧扔了它。文中我省略了很多东西。心疼那,浪费我两个晚上。译者:karycontact:karymay@163.netSTL概述STL的一个重要特点是数据结构和算法的分离。尽管这是个简单的概念,但这种分离确实使得STL变得非常通用。例如,由于STL的sort()函数是完全通用的,你可以用它来操作几乎任何数据集合,包括链表,容器和数组。要点STL算法作为模板函数提供。为了和其他组件相区别,在本书中STL算法以后接一对圆
阅读全文
posted @
2013-08-07 20:05
猿人谷
阅读(886)
推荐(0) 编辑
linux下查看硬件配置的相关命令
摘要:from:http://www.jakee.cn/index.php/archives/501.html常用命令整理如下:查看主板的序列号: dmidecode | grep -i ’serial number’用硬件检测程序kuduz探测新硬件:service kudzu start ( or restart)查看CPU信息:cat /proc/cpuinfo [dmesg | grep -i 'cpu'][dmidecode -t processor]查看内存信息:cat /proc/meminfo [free -m][vmstat]查看板卡信息:cat /proc/pci
阅读全文
posted @
2013-08-07 19:55
猿人谷
阅读(419)
推荐(0) 编辑
list用法详解
摘要:在这里感谢大牛们的奉献!此致敬礼!本文转载自百度文库。作者如下。其中下面的count, count_if等函数的使用有些陈旧,如在编译时遇到问题,请百度。标准模板库(STL)介绍作者:Scott Field本文以List容器为例子,介绍了STL的基本内容,从容器到迭代器,再到普通函数,而且例子丰富,通俗易懂。不失为STL的入门文章,新手不容错过! 0 前言 1 定义一个list 2 使用list的成员函数push_back和push_front插入一个元素到list中 3 list的成员函数empty() 4 用for循环来处理list中的元素 5 用STL的通用算法for_eac...
阅读全文
posted @
2013-08-07 19:54
猿人谷
阅读(4502)
推荐(0) 编辑
map用法详解
摘要:转自:http://www.kuqin.com/cpluspluslib/20071231/3265.htmlMap是 STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于 这个特性,它完成有可能在我们处理一对一数据的时候,在编程上提供快速通道。这里说下map内部数据的组织,map内部自建一颗红黑树(一种非严格意义上 的平衡二叉树),这颗树具有对数据自动排序的功能,所以在map内部所有的数据都是有序的,后边我们会见识到有序的好处。下面举例说明 什么是一对一的数据映射。比如一个班级中,每个学生的学号跟他的
阅读全文
posted @
2013-08-07 19:44
猿人谷
阅读(3397)
推荐(0) 编辑
求用1,2,5这三个数不同个数组合的和为100的组合个数
摘要:题目:写一个程序, 要求功能:求出用1,2,5这三个数不同个数组合的和为100的组合个数。如:100个1是一个组合,5个1加19个5是一个组合。。。。 请用C++语言写。答案:最容易想到的算法是:设x是1的个数,y是2的个数,z是5的个数,number是组合数注意到0#include using namespace std;int SimpleSolution();int optimize();void main(){int number1,number2;cout<<"求用1,2,5这三个数不同个数组合的和为100的组合个数"<<endl;numb
阅读全文
posted @
2013-08-07 19:40
猿人谷
阅读(984)
推荐(0) 编辑
【雅虎笔试题】两个已经排好序的数组,找中位数
摘要:来源:http://www.cnblogs.com/qi09/archive/2011/10/18/2216844.html题目:现在有两个排好序的整数数组,a[N]和b[N],要求写一个函数,功能为返回两个数组中第N大数和第N+1大数的中间值,即求解两者的和除以2。函数原型:double getMedian( int a[], int b[] );下面,我们先来分析一个类似的问题,假设a和b都是升序的,分别有n1和n2个元素,求两个数组合并后第k大元素值。分别取两个数组中间索引的数,a[x]和b[y],比较两个数的大小:if( a[x] x+y+1,则可以判断出a数组的前半部分元素都不符合.
阅读全文
posted @
2013-08-07 19:38
猿人谷
阅读(781)
推荐(0) 编辑
C++ STL算法系列4---unique , unique_copy函数
摘要:一.unique函数类属性算法unique的作用是从输入序列中“删除”所有相邻的重复元素。该算法删除相邻的重复元素,然后重新排列输入范围内的元素,并且返回一个迭代器(容器的长度没变,只是元素顺序改变了),表示无重复的值范围得结束。 1 // sort words alphabetically so ...
阅读全文
posted @
2013-08-07 16:54
猿人谷
阅读(54824)
推荐(5) 编辑
C++ STL算法系列3---求和:accumulate
摘要:该算法在numeric头文件中定义。假设vec是一个int型的vector对象,下面的代码://sum the elements in vec starting the summation with the value 42int sum = accumulate(vec.begin() , vec.end() , 42);将sum设置为vec的元素之和再加上42。accumulate带有三个形参:头两个形参指定要累加的元素范围,第三个形参则是累加的初值。accumulate函数将它的一个内部变量设置为指定的初始值,然后在此初值上累加输入范围内所有元素的值。accumulate算法返回累加的结
阅读全文
posted @
2013-08-06 20:22
猿人谷
阅读(80345)
推荐(9) 编辑
C++ STL算法系列2---find ,find_first_of , find_if , adjacent_find的使用
摘要:一.find运算假设有一个int型的vector对象,名为vec,我们想知道其中是否包含某个特定值。解决这个问题最简单的方法时使用标准库提供的find运算: 1 // value we'll look for 2 int search_value = 42; 3 4 //call find to see if that value is present 5 vector::const_iterator result = find(vec.begin() , vec.end() , search_value); 6 7 //report the result 8 cout 2 #incl
阅读全文
posted @
2013-08-06 19:57
猿人谷
阅读(30577)
推荐(3) 编辑
C/C++面试小知识点
摘要:1.static有什么用途。解答:在函数体中,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。也就是说,这个函数被限制在声明它的模块的本地范围内使用。2.引用与指针有什么区别?解答:引用必须被初始化,指针不必。引用初始化后不能被改变,指针可以改变所指的对象。不存在指向空值的引用,但是存在指向空值的指针。3.写出float x与“零值”比较的if语句。if(x > 0.000001 &
阅读全文
posted @
2013-08-06 18:59
猿人谷
阅读(1124)
推荐(1) 编辑
C语言内存地址基础
摘要:来源:http://blog.jobbole.com/44845/从计算机内存的角度思考C语言中的一切东东,是挺有帮助的。我们可以把计算机内存想象成一个字节数组,内存中每一个地址表示 1 字节。比方说我们的电脑有 4K 内存,那这个内存数组将会有 4096 个元素。当我们谈论一个存储地址的指针时,就当相于我们在谈论一个存储着该内存数组某个元素索引的指针。逆向引用某个指针,将会得到数组中该索引所指向的 值。这一切当然都是谎言。操作系统对内存的管理要远比这复杂。内存不一定连续,也不一定按顺序处理。但前面的类比是一种讨论C语言内存的简单方式。如果对『指针』、『地址』和『逆向引用』感到混乱,请看《C语
阅读全文
posted @
2013-08-06 18:39
猿人谷
阅读(3482)
推荐(0) 编辑
C语言函数指针基础
摘要:来源:http://blog.jobbole.com/44639/本文写的非常详细,因为我想为初学者建立一个意识模型,来帮助他们理解函数指针的语法和基础。如果你不讨厌事无巨细,请尽情阅读吧。函数指针虽然在语法上让人有些迷惑,但不失为一种有趣而强大的工具。本文将从C语言函数指针的基础开始介绍,再结合一些简单的用法和关于函数名称和地址的趣闻。在最后,本文给出一种简单的方式来看待函数指针,让你对其用法有一个更清晰的理解。函数指针和一个简单的函数我们从一个非常简单的”Hello World“函数入手,来见识一下怎样创建一个函数指针。1234567891011121314#include // 函数原型
阅读全文
posted @
2013-08-06 18:37
猿人谷
阅读(1434)
推荐(0) 编辑
C++ STL算法系列1---count函数
摘要:一.count函数algorithm头文件定义了一个count的函数,其功能类似于find。这个函数使用一对迭代器和一个值做参数,返回这个值出现次数的统计结果。编写程序读取一系列int型数据,并将它们存储到vector对象中,然后统计某个指定的值出现了多少次。核心代码:cout 5 #include 6 #include 7 using namespace std; 8 9 int main()10 {11 int ival , searchValue;12 vector ivec;13 14 //读入int型数据并存储到vector对象中,直至遇到文件结束符15...
阅读全文
posted @
2013-08-06 16:58
猿人谷
阅读(23289)
推荐(0) 编辑
《C++ primer》--第11章
摘要:习题11.1 algorithm头文件定义了一个count的函数,其功能类似于find。这个函数使用一对迭代器和一个值做参数,返回这个值出现次数的统计结果。编写程序读取一系列int型数据,并将它们存储到vector对象中,然后统计某个指定的值出现了多少次。//读取一系列int数据,并将它们存储到vector对象中,//然后使用algorithm头文件中定义的名为count的函数,//统计某个指定的值出现了多少次#include#include#includeusing namespace std;int main(){ int ival , searchValue; vector ivec;
阅读全文
posted @
2013-08-06 16:52
猿人谷
阅读(472)
推荐(0) 编辑
十个顶级的C语言资源助你成为优秀的程序员
摘要:转载:http://web.itivy.com/article-364-1.html人们通常认为计算机编程很烦,但是有些人却从中发现了乐趣。每一个程序员不得不跟随计算机编程语言的潮流。大多数的人以C语言作为开始编程的语言,因为C语言是在编写操作系统和应用程序中用的最为普遍的语言。如果你正在读这篇文章,很有可能你已经是一个编程人员或者想成为一名编程人员。幸运的是,这里正是你要找的地方,在这篇文章中我收集了一些C编程的网址或者教程可以帮助你成为一名好的C语言编程人员。这些网址或教程会帮助你学习C语言的基本知识和高级编程技巧。1.C Programming Notes这些笔记来自华盛顿大学实验学院关
阅读全文
posted @
2013-08-05 21:10
猿人谷
阅读(956)
推荐(1) 编辑
转载:ofstream和ifstream详细用法
摘要:ofstream是从内存到硬盘,ifstream是从硬盘到内存,其实所谓的流缓冲就是内存空间;在C++中,有一个stream这个类,所有的I/O都以这个“流”类为基础的,包括我们要认识的文件I/O,stream这个类有两个重要的运算符:1、插入器(>) 从流中输入数据。比如说系统有一个默认的标准输入流(cin),一般情况下就是指的键盘,所以,cin>>x;就表示从标准输入流中读取一个指定类型(即变量x的类型)的数据。 在C++中,对文件的操作是通过stream的子类fstream(file stream)来实现的,所以,要用这种方式操作文件,就必须加入头文件fstream.h
阅读全文
posted @
2013-08-04 14:10
猿人谷
阅读(501)
推荐(0) 编辑
总结c++ primer中的notes
摘要:转载:http://blog.csdn.net/ace_fei/article/details/7386517说明:C++ Primer, Fourth Edition (中英文)下载地址:http://download.csdn.net/detail/ace_fei/4165568以下内容截取自该书籍,都是一些基础而又容易忽略的知识点。初窥输入/输出endl 是一个特殊值,称为操纵符,将它写入输出流时,具有输出换行的效果,并刷新与设备相关联的缓冲区。通过刷新缓冲区,用户可立即看到写入到流中的输出。比如下面这段程序可以看出,如果没有cout usingnamespacestd;intmain(
阅读全文
posted @
2013-08-04 14:08
猿人谷
阅读(659)
推荐(0) 编辑
vim使用
摘要:1. ctrl+] 碰到多个标签时,不出现选择列表,直接跳转到第一个tag的位置。使用g]即可,功能 类似于 CTRL-],但使用 ":tselect" 而不是 ":tag"。2 set mouse字符串 (缺省为空,GUI缺省为 "a")允许使用鼠标。只可用于特定终端 (图形化控制台)。可以为不同模式分别打开鼠标: n 普通模式 v 可视模式 i 插入模式 c 命令行模式 h 编辑帮助文件时,所有前面的模式 a 所有前面的模式 r hit-enter和more-prompt提示时 A 可视模式的自动选择通常你会这样为所有四个模式打开
阅读全文
posted @
2013-08-04 14:06
猿人谷
阅读(398)
推荐(0) 编辑
转载:fstream和ifstream详细用法
摘要:文件 I/O 在C++中比烤蛋糕简单多了。在这篇文章里,我会详细解释ASCII和二进制文件的输入输出的每个细节,值得注意的是,所有这些都是用C++完成的。 一、ASCII 输出 为了使用下面的方法, 你必须包含头文件(译者注:在标准C++中,已经使用取代,所有的C++标准头文件都是无后缀的。)。这是 的一个扩展集, 提供有缓冲的文件输入输出操作. 事实上, 已经被包含了, 所以你不必包含所有这两个文件, 如果你想显式包含他们,那随便你。我们从文件操作类的设计开始, 我会讲解如何进行ASCII I/O操作。如果你猜是"fstream," 恭喜你答对了! 但这篇文章介绍的方法,
阅读全文
posted @
2013-08-04 14:05
猿人谷
阅读(2557)
推荐(0) 编辑
《C++ primer》--第10章
摘要:习题10.21 解释map和set容器的差别,以及他们各自适用的情况。解答:map容器和set容器的差别在于:map容器是键-值对的集合,而set容器只是键的集合;map类型适用于需要了解键与值的对应的情况,例如,字典(需要了解单词(键)与其解释(值)的对应情况),而set类型使用于只需判断某值是否存在的情况,例如,判断某人的名字是否在黑名单中。习题20.22 解释set和list容器的差别,以及他们各自适用的情况。解答:set容器和list容器的主要差别在于:set容器中的元素不能修改,而list容器中的元素无此限制;set容器适用于保存元素值不变的集合,而list容器适用于保存会发生变化的
阅读全文
posted @
2013-08-03 21:41
猿人谷
阅读(244)
推荐(0) 编辑
统计并输出所读入的单词出现的次数
摘要:题目:编写程序统计并输出所读入的单词出现的次数。解答:可以建立一个map对象,保存所读入的单词及其出现次数(以单词为键,对应的值为单词的出现次数)。对于map容器,如果下标所表示的键在容器中不存在,则添加新元素,利用这一特性可编写程序如下://通过建立map对象保存所读入的单词及其出现次数,//统计并输出所读入的单词出现的次数#include#include#includeusing namespace std;int main(){ map wordCount; string word; //读入单词并统计其出现次数 cout>word) ++wordCount[word]; //wo
阅读全文
posted @
2013-08-03 19:55
猿人谷
阅读(1451)
推荐(0) 编辑
转载:C语言的谜题
摘要:转载:http://coolshell.cn/articles/945.html这几天,本站推出了几篇关于C语言的很多文章如下所示:语言的歧义 [酷壳链接] [CSDN链接]谁说C语言很简单? [酷壳链接] [CSDN链接]6个变态的C语言Hello World程序 [酷壳链接] [CSDN链接]如何加密/弄乱C源代码 [酷壳链接] [CSDN链接]C语言的谜题 [酷壳链接] [CSDN链接]我们可以看到很多C语言相关的一些东西。比如《语言的歧义》主要告诉了大家C语言中你意想不到的错误以及一些歧义上的东西。而《谁说C语言很简单》 则通过一些看似你从来不可能写出的代码来告诉大家C语言并不是一件容
阅读全文
posted @
2013-08-03 18:38
猿人谷
阅读(324)
推荐(0) 编辑
转载: Vim 练级攻略
摘要:转自:http://coolshell.cn/articles/5426.html 酷壳vim的学习曲线相当的大(参看各种文本编辑器的学习曲线),所以,如果你一开始看到的是一大堆VIM的命令分类,你一定会对这个编辑器失去兴趣的。下面的文章翻译自《Learn Vim Progressively》,我觉得这是给新手最好的VIM的升级教程了,没有列举所有的命令,只是列举了那些最有用的命令。非常不错。——————————正文开始——————————你想以最快的速度学习人类史上最好的文本编辑器VIM吗?你先得懂得如何在VIM幸存下来,然后一点一点地学习各种戏法。Vim the Six Billion D
阅读全文
posted @
2013-08-03 18:30
猿人谷
阅读(306)
推荐(0) 编辑
转载:如何迅速秒杀掉海量数据处理面试题
摘要:转自:http://blog.csdn.net/v_july_v/article/details/7382693教你如何迅速秒杀掉:99%的海量数据处理面试题作者:July出处:结构之法算法之道blog前言 一般而言,标题含有“秒杀”,“99%”,“史上最全/最强”等词汇的往往都脱不了哗众取宠之嫌,但进一步来讲,如果读者读罢此文,却无任何收获,那么,我也甘愿背负这样的罪名,:-),同时,此文可以看做是对这篇文章:十道海量数据处理面试题与十个方法大总结的一般抽象性总结。 毕竟受文章和理论之限,本文将摒弃绝大部分的细节,只谈方法/模式论,且注重用最通俗最直白的语言阐述相关问题。最后,有一点必须强.
阅读全文
posted @
2013-08-02 09:04
猿人谷
阅读(669)
推荐(0) 编辑