C/C++基础
文章平均质量分 59
JKhere
程序猿
展开
-
C语言实现栈的操作
#include #include void push(int);int pop();int *pi = NULL;//top指针int *tos = NULL;//head指针int main(){ int v; //申请50个int的空间 pi = (int *)malloc(50*sizeof(int)); if(!pi) {原创 2014-04-21 10:06:15 · 1157 阅读 · 0 评论 -
c++ primer习题11.1
/**algorithm头文件定义了一个名为count的函数,*其功能类似于find,*这个函数使用一对迭代器和一个值做参数,返回这个值出现次数的统计结果。*/#include #include #include using namespace std;int main(){ int ival, searchValue; vector ivec; c原创 2013-08-23 10:03:49 · 779 阅读 · 0 评论 -
C++ primer习题10.9
编写程序统计并输出所读入的单词出现的次数。解答:可以建立一个map对象,保存所读入的单词及其出现次数(以单词为键,对应的值为单词的出现次数)。#include #include #include using namespace std;int main(){ map wordCount; string word; //读入单词并统计其出现次数原创 2013-08-22 20:42:21 · 840 阅读 · 0 评论 -
c++ primer 习题9.14
使用迭代器编写程序,从标准输入设备读入若干string对象,并将他们存储在一个vector对象中,然后输出该vector对象中的所有元素。#include #include using namespace std;int main(){ vector svec; string str; cout<<"Enter some strings(Ctrl+Z to原创 2013-08-22 16:33:30 · 904 阅读 · 0 评论 -
c++ primer习题9.13
#include #include #include using namespace std;templateT1 findInt(T1 beg, T1 end, T2 ival){ while(beg!=end) { if(*beg==ival) break; else ++beg;原创 2013-08-22 16:25:53 · 747 阅读 · 0 评论 -
c++ primer习题9.26
#include #include #include using namespace std;int main(){ int ia[]={0,1,1,2,3,5,8,13,21,55,89}; vector ivec(ia, ia+11); list ilst(ia,ia+11); for(list::iterator lit=ilst.begin(原创 2013-08-22 18:33:00 · 747 阅读 · 0 评论 -
c++ primer习题9.42, 10.5
//编写程序读入一系列单词,并将它们存储在stack对象中#include #include #include using namespace std;int main(){ stack sstack; string str; cout<<"Enter some words(Ctrl+Z to end):"<<endl; while(cin>>st原创 2013-08-22 19:59:43 · 1061 阅读 · 0 评论 -
c++ primer习题9.34, 9.35, 9.40
使用迭代器将string对象中的字符都改为大写字母#include #include #include using namespace std;int main(){ string str="This is a example"; for(string::iterator iter=str.begin();iter!=str.end(); ++iter)原创 2013-08-22 19:26:22 · 888 阅读 · 0 评论 -
c++ primer习题9.24
/**分别使用下标操作符、front函数以及begin函数*获取vector容器的第一个元素*/#include #include using namespace std;int main(){ vector ivec; int ival; cout<<"Enter some integers for vector:"<<endl; while(原创 2013-08-22 18:21:02 · 675 阅读 · 0 评论 -
编写常规DLL
//mathlib.h#ifndef _MYMATH_H#define _MYMATH_Hextern "C" int _declspec(dllexport) Summary(int n);extern "C" int _declspec(dllexport) Factorial(int n);#endif//mathlib.cpp#include "stdafx.h"#原创 2013-06-21 12:56:37 · 758 阅读 · 0 评论 -
指向函数的指针
函数指针是指指向函数而非指向对象的指针。像其它指针一样,函数指针也指向某个特定的类型。函数类型由其返回类型以及形参表确定,而与函数名无关://pf points to function returning bool that takes 2 const string referencebool (*pf)(const string &,const string &);这个语句将p原创 2013-06-21 11:16:56 · 583 阅读 · 0 评论 -
推荐的C++书籍以及阅读顺序
推荐的C++书籍以及阅读顺序当读者有一定c/c++基础推荐的阅读顺序:level 1从>开始,短小精悍,可以对c++能进一步了解其特性以>作字典和课外读物,因为太厚不可能一口气看完level 2然后从>开始转职,这是圣经,请遵守10诫,要经常看,没事就拿来翻翻接着是>,个人认为Herb Sutter主席大人的语言表达能力不及Scott Meyers总是在教育转载 2013-08-25 22:47:53 · 817 阅读 · 0 评论 -
C++ const总结
C++ const总结const int a = 5; 对象a是个int型的const对象int const b = 5; 跟上面相同,对象b也是个int型的const对象 const double *cptr; cptris a pointer to a double that is constcptr指向的对象是double类型的const对象 例如原创 2013-08-25 17:09:27 · 791 阅读 · 0 评论 -
常见的笔试题--C/C++(持续更新)
1.有三个类A B C定义如下,请确定sizeof(A) sizeof(B) sizeof(C)的大小顺序,并给出理由。struct A{ A() {} ~A() {} int m1; int m2;};struct B:A{ B() {} ~B() {} int m1; char m2; static cha原创 2014-03-31 13:59:03 · 1500 阅读 · 0 评论 -
C++:STL标准入门汇总
50条忠告:1.把C++当成一门新的语言学习;2.看《Thinking In C++》,不要看《C++变成死相》;3.看《The C++ Programming Language》和《Inside The C++ Object Model》,不要因为他们很难而我们自己是初学者所以就不看;4.不要被VC、BCB、BC、MC、TC等词汇所迷惑——他们都是集成开发环境,而我们要学的是一门转载 2013-12-25 15:49:58 · 626 阅读 · 0 评论 -
一个简单的单链表实现
#include using namespace std;#define N 10 /*N为个数*/typedef struct node{ int val; struct node *link;}Node;Node* creat(int n) /*建立单链表的函数,形参n为个数*/{ Node *p,*h,*s; /* *h保存表头结点的指针,*p指原创 2013-12-24 16:34:07 · 1009 阅读 · 0 评论 -
重载输出操作符("<<")时遇到的问题
#include using namespace std;class point{public: point():x(0.0),y(0.0){} point(double a, double b){ x=a; y=b; } double getx(){ return x;} double gety(){ return y;} void setx(d原创 2014-01-02 13:59:55 · 986 阅读 · 0 评论 -
字符串和字符数组
void test1(){ char string[10]; char *str1="0123456789"; strcpy(string, str1);}//函数test1中,指针str1所指向的字符串有11个元素。一定要注意字符串是以'\0'为结尾的,而strcpy拷贝了整个字符串包括'\0'。所以存在下标越界的问题。void test2(){ char string[10]原创 2013-12-30 20:41:03 · 732 阅读 · 0 评论 -
什么叫程序库?
什么叫程序库所谓程序库,一般是软件作者为了发布方便、替换方便或二次开发目的,而发布的一组可以单独与应用程序进行compile time或runtime链接的二进制可重定位目标码文件。通俗一点说,所谓一个库,就是一个文件,这个文件可以在编译时由编译器直接链接到可执行程序中,也可以在运行时由操作系统的runtime environment根据需要动态加载到内存中。一组库,就形成了一个发布包,当然,转载 2013-10-11 13:20:46 · 2498 阅读 · 0 评论 -
C++中assert语句的使用
#include #include using namespace std;const int N_PRIMES = 7;int primes[N_PRIMES] = {2,3,5,7, 11, 13, 17};int main(){ int index = 10; assert(index<N_PRIMES);//这里assert括号内为false,程序异常终止原创 2013-09-23 09:17:07 · 1907 阅读 · 2 评论 -
关于c++库文件的一点使用体会
库的使用最好能够重新编译一遍,这样的话如果有bug就能在编译过程中发现。如果不重新编译的话,很可能会有各种各样的难以解决的bug。如我在使用opencv库过程中发现,imshow函数无法正常使用了!这个库是我用gcc4.5编译的,当我重装系统后用gcc4.7调用库时(codeblocks自带的编译器)就会出现“内存不能为read”的错误。没有什么好的解决办法。只好重新卸载了gcc4.7换回了g原创 2013-09-21 15:20:59 · 956 阅读 · 0 评论 -
默认参数重复定义的错误
error: default argument given for parameter ...error: after previous specification in ...今天在编译程序时,出现了上述错误,不知道是什么原因,查了查资料终于搞明白了。原因是:默认参数只能指定一次。在函数的声明和定义中只能在一处指定参数的默认值。如果两处都指定为非法;编译器把这种情况作为非法处理的原创 2013-09-20 19:08:49 · 3643 阅读 · 0 评论 -
比较java与C++的不同
最近正在学习java,看的是《java核心技术》(第八版),在第5章继承中,子类访问父类的方法使用了关键字super,在c++中没有这个关键字,通常都是直接使用的。java中也是可以直接使用父类的公开方法的,但是如果子类和父类的命名方法相同,又想访问父类方法时就只能使用super关键字了。在c++中,我一时不知道怎么用,查了查才知道用类名修饰符。下面是一个简单的例子,仿照《java核心技术》第原创 2013-09-02 15:57:20 · 737 阅读 · 0 评论 -
Hanoi塔
//将a塔移动到b塔上void hanoi(int n,int a,int b,int c){ if(n>0) { hanoi(n-1,a,c,b); move(a,b); hanoi(n-1,c,b,a); }}hanoi塔的递归算法。要将塔从a移动到b上,首先将前n-1个盘移动到c上,再将a塔剩下的一个移动到b上,最后将c塔上的n-1个盘移动到b塔上。原创 2013-05-20 08:38:39 · 1010 阅读 · 0 评论 -
C语言malloc用法
#include #include int main(){ int *pi; pi=malloc(100); if(pi==NULL){ printf("Error! Out of memory!\n"); exit(1); } else{ printf("OK! memory enough!\n");原创 2013-04-30 12:08:38 · 1026 阅读 · 0 评论 -
《C和指针》第12章 使用结构和指针
这一章详细讲了单链表,考虑的很全面,我感觉很有用,特此记录下来。单链表的头文件(sll_node.h):typedef struct NODE{ struct NODE *link; int value;} Node;插入函数(sll_insert):#include #include #include "sll_node.h"defi原创 2013-04-30 14:09:42 · 955 阅读 · 0 评论 -
多态性
面向对象的多态性可以分为四类:重载多态、强制多态、包含多态和参数多态。运算符重载属于强制多态。运算符重载是对已有的运算符赋予多重含义,使同一个运算符作用于不同类型的数据时导致不同的行为。运算符重载的实质就是函数重载。多态从实现的角度来讲可以划分为两类:编译时的多态和运行时的多态。原创 2013-04-07 14:13:57 · 715 阅读 · 0 评论 -
隐藏规则
在没有虚函数的情况下,如果派生类中声明了与基类成员函数同名的新函数,即使函数的参数表不同,从基类继承的同名函数的所有重载形式也都会被隐藏。如果要访问被隐藏的成员,就需要使用作用域分辨符和基类名来限定。在没有虚函数的情况下,如果某派生类的多个基类拥有同名的成员,同时,派生类又新增这样的同名成员,在这种情况下,派生类成员将隐藏所有基类的同名成员。#include using names原创 2013-04-07 10:49:36 · 1078 阅读 · 0 评论 -
projecteuler Problem 29
def Judge(small,big): lsum=[] num=0 for i in range(small,big+1): for j in range(small,big+1): num=i**j if(lsum.count(num)==0): lsum.append(n原创 2013-03-24 16:23:05 · 565 阅读 · 0 评论 -
将单目运算符“++”重载为成员函数形式
对于前置单目运算符,重载函数没有形参,对于后置单目运算符,重载函数有一个int型形参。这个int型参数在函数体中并不使用,纯粹是用来区别前置与后置,因此参数表中可以只给出类型名,没有参数名。#include using namespace std;class Clock //类定义{public: Clock(int NewH=0,int NewM原创 2013-04-07 15:38:54 · 1627 阅读 · 0 评论 -
派生类析构函数举例(多继承、含有嵌入对象)
#include using namespace std;class B1{public: B1(int i){cout<<"coustructing B1 "<<i<<endl;} ~B1(){cout<<"destructing B1"<<endl;}};class B2{public: B2(int j){cout<<"c原创 2013-04-07 10:36:20 · 862 阅读 · 0 评论 -
派生类构造函数举例(多继承、含有内嵌对象)
#include using namespace std;class B1{public: B1(int i){cout<<"coustructing B1 "<<i<<endl;}};class B2{public: B2(int j){cout<<"coustructing B2 "<<j<<endl;}};class B3原创 2013-04-07 10:01:52 · 2641 阅读 · 0 评论 -
C/C++的64位整型
C/C++的64位整型在C/C++中,64为整型一直是一种没有确定规范的数据类型。现今主流的编译器中,对64为整型的支持也是标准不一,形态各异。一般来说,64位整型的定义方式有long long和__int64两种(VC还支持_int64),而输出到标准输出方式有printf("%lld",a),printf("%I64d",a),和cout 本文讨论的是五种常用的C/C++编译器对64位转载 2013-03-22 12:55:52 · 1361 阅读 · 0 评论 -
char类型转换成int类型
char类型转换成int类型的方法有很多,最简单的当属ascii码。因为char类型参与四则运算的时候是转化成asciii码的,所以可以利用这一点。如‘0’,字符‘0’的ascii码为48,要转换成int型,只需要(‘0’-48)即可。也就是说,0-9的字符,减去48后的ascii码与他本身代表的数值相同。如下面的例子:#include using namespace st原创 2013-03-22 10:28:04 · 8334 阅读 · 1 评论 -
c++ primer从头再来(三)
第九章 顺序容器标准库定义了三种顺序容器类型:vector, list和deque(双端队列)。三种容器适配器:stack, queue和priority_queue。顺序容器的定义:#include #include #include vector svec;//empty vector that can hold stringslist ilist;//emp原创 2013-03-19 14:21:50 · 862 阅读 · 0 评论 -
C++ primer从头再来(二)
引用形参的典型用法#include using namespace std;void swap(int &v1, int &v2){ int tmp = v2; v2 = v1; v1 = tmp;}int main(){ int a = 1; int b = 2; cout<<a<<","<<b<<endl; swap(a,b); cout<<a<<","<<原创 2013-03-18 13:51:23 · 665 阅读 · 0 评论 -
复数类加减法运算重载---成员函数形式
#include using namespace std;class complex //复数类定义{public: complex(double r=0.0,double i=0.0) //构造函数 { real=r; imag=i; } complex operator + (co原创 2013-04-07 14:54:41 · 2152 阅读 · 0 评论 -
project euler Problem 3
#include using namespace std;int main(){ __int64 number = 600851475143; int divisor = 2; while (number > 1) { if (0 == (number % divisor)) { number /= divisor; diviso原创 2013-03-25 11:42:59 · 569 阅读 · 0 评论 -
C语言计算字符串的长度strlen
#include #include size_t strlen(char *string){ int length=0; while(*string++ != '\0') length+=1; return length;}int main(){ char *str="1234567890"; char *str1="Hello原创 2013-04-29 22:53:33 · 1532 阅读 · 0 评论 -
C语言中的结构体
#include #include struct SIMPLE{ int a; int b; int c;};int main(){ struct SIMPLE x; x.a=4; x.b=5; printf("x.a is:%d",x.a); printf("\n"); printf("x.b is:%d"原创 2013-04-29 23:33:26 · 679 阅读 · 0 评论