2013年11月12日
摘要: 分析以下代码的输出:#includeusing namespace std;class A{public: A(int j):age(j) , num(age + 1) { cout<<"age:"<<age<<",num:"<<num<<endl; }protected: int num; int age;};void main(){ A sa(15);}运行结果:age:15 , num:2(num为一个随机数)由于按成员在类定义中的声明顺序进行构造,而不是按构造函数说明中冒号后面的顺序,所 阅读全文
posted @ 2013-11-12 16:58 猿人谷 阅读(1239) 评论(0) 推荐(0) 编辑
摘要: 题目:输入两个字符串,从第一字符串中删除第二个字符串中所有的字符。例如,输入”They are students.”和”aeiou”,则删除之后的第一个字符串变成”Thy r stdnts.”。首先我们考虑如何在字符串中删除一个字符。由于字符串的内存分配方式是连续分配的。我们从字符串当中删除一个字符,需要把后面所有的字符往前移动一个字节的位置。但如果每次删除都需要移动字符串后面的字符的话,对于一个长度为n的字符串而言,删除一个字符的时间复杂度为O(n)。而对于本题而言,有可能要删除的字符的个数是n,因此该方法就删除而言的时间复杂度为O(n2)。事实上,我们并不需要在每次删除一个字符的时候都去移 阅读全文
posted @ 2013-11-12 15:41 猿人谷 阅读(2190) 评论(0) 推荐(0) 编辑
摘要: 题目:在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b。看到这道题时,最直观的想法是从头开始扫描这个字符串中的每个字符。当访问到某字符时拿这个字符和后面的每个字符相比较,如果在后面没有发现重复的字符,则该字符就是只出现一次的字符。如果字符串有n个字符,每个字符可能与后面的O(n)个字符相比较,因此这种思路时间复杂度是O(n2)。我们试着去找一个更快的方法。由于题目与字符出现的次数相关,我们是不是可以统计每个字符在该字符串中出现的次数?要达到这个目的,我们需要一个数据容器来存放每个字符的出现次数。在这 个数据容器中可以根据字符来查找它出现的次数,也就是说这个容器的作用 阅读全文
posted @ 2013-11-12 15:32 猿人谷 阅读(1204) 评论(0) 推荐(0) 编辑
摘要: 将s所指向的某一块内存中的每个字节的内容全部设置为ch指定的ASCII值, 块的大小由第三个参数指定,这个函数通常为新申请的内存做初始化工作, 其返回值为指向S的指针。需要的头文件在C中 在C++中 更详细的解说见百度百科 -->http://baike.baidu.com/view/982208.htm1. void *memset(void *s,int c,size_t n)总的作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。2。例子void main(){char *s="Golden Global View";clrscr();memset(s, 阅读全文
posted @ 2013-11-12 15:10 猿人谷 阅读(61312) 评论(1) 推荐(2) 编辑