代码改变世界

随笔分类 -  C++

微软面试题:写程序找出二叉树的深度

2012-03-23 22:47 by Rollen Holt, 1014 阅读, 收藏, 编辑
摘要: 一个树的深度等于max(左子树深度,右子树深度)+1。可以使用递归实现。 int DepthOfTree(BiTreeNode* root){ if(NULL == root) { return 0; } return max(DepthOfTree(root->leftChild), DepthOfTree(root->rightChild))+1;}也可以采用下面的思路:类似于递归的... 阅读全文

微软面试题:编程实现两个正整数的除法

2012-03-23 22:42 by Rollen Holt, 2869 阅读, 收藏, 编辑
摘要: 编程实现两个正整数的除法,当然不能用除法操作符。 // return x/y. int div(const int x, const int y) { .... } // return x/yint div(const int x, const int y) {int left_num = x;int result = 0;while (left_num >= y) ... 阅读全文

谷歌面试题:给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数

2012-03-23 22:37 by Rollen Holt, 3435 阅读, 收藏, 编辑
摘要: 给定能随机生成整数1到5的函数,写出能随机生成整数1到7的函数。 我的想法: 编写一个生成0和1的随机函数: step1. 调用给定的随机函数original_rand()生成一个数 如果==3 goto step1 如果<3 return 0 如果>3 return 1 编写一个生成1到7的随机函数 调用生成0和1的随机函数3次,构成000或001或010.... 阅读全文

百度面试题:从输入url到显示网页,后台发生了什么?

2012-03-23 22:09 by Rollen Holt, 22629 阅读, 收藏, 编辑
摘要: 参考http://igoro.com/archive/what-really-happens-when-you-navigate-to-a-url/ http://www.cnblogs.com/wenanry/archive/2010/02/25/1673368.html 原文:http://igoro.com/archive/what-really-happens-when-you-nav... 阅读全文

微软面试题:正则表达式提取链接地址

2012-03-23 21:59 by Rollen Holt, 4117 阅读, 收藏, 编辑
摘要: 写出正则表达式,从一个字符串中提取链接地址。比如下面字符串中 "IT面试题博客中包含很多 <a href=http://hi.baidu.com/mianshiti/blog/category/微软面试题> 微软面试题 </a> " 则需要提取的地址为 " http://hi.baidu.com/mianshiti/blog/category/微软面试题 " 在python中: ... 阅读全文

微软面试题:反序一个单向链表

2012-03-23 21:58 by Rollen Holt, 1067 阅读, 收藏, 编辑
摘要: 反序一个单向链表 class Node {Node* next;}// Return the new start after reversion. Node* ReverseList (Node* start) { }#include <stdio.h> typedef struct snode{ char data; struct snode *next;}node; node *reser... 阅读全文

谷歌面试题:1024! 末尾有多少个0?

2012-03-23 21:50 by Rollen Holt, 1468 阅读, 收藏, 编辑
摘要: 解答思路: 末尾0的个数取决于乘法中因子2和5的个数。显然乘法中因子2的个数大于5的个数,所以我们只需统计因子5的个数。 是5的倍数的数有: 1024 / 5 = 204个 是25的倍数的数有:1024 / 25 = 40个 是125的倍数的数有:1024 / 125 = 8个 是625的倍数的数有:1024 / 625 = 1个 所以1024! 中总共有204+40... 阅读全文

新浪面试题:删除字符串中多余的空格

2012-03-23 21:43 by Rollen Holt, 825 阅读, 收藏, 编辑
摘要: 题目描述: 给定字符串,删除开始和结尾处的空格,并将中间的多个连续的空格合并成一个。 比如 “ I like http://hi.baidu.com/mianshiti ” 会变成 "I like http://hi.baidu.com/mianshiti"。 void RemoveExtraSpace(char* str){ bool keep_space = fals... 阅读全文

extern "C"的用法解析

2012-03-20 23:29 by Rollen Holt, 99160 阅读, 收藏, 编辑
摘要: 1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显的不同。2.从标准头文件说起 某企业曾经给出如下的一道面试题: 面试题 为什么标准头文件都有类似以下的结构? #ifndef __INCvxWorksh #define __INCvxWorksh #i... 阅读全文

C++ 枚举类型的思考

2012-03-19 08:11 by Rollen Holt, 705 阅读, 收藏, 编辑
摘要: C++ 中的枚举类型继承于 C 语言。就像其他从 C 语言继承过来的很多特性一样,C++ 枚举也有缺点,这其中最显著的莫过于作用域问题——在枚举类型中定义的常量,属于定义枚举的作用域,而不属于这个枚举类型。例如下面的示例:enum FileAccess { Read = 0x1, Write = 0x2,};FileAccess access = ::Read; // 正确FileAccess access = FileAccess::Read; // 错误C++枚举的这个特点对于习惯面向对象和作用域概念的人来说是不可接受的。首先,FileAccess::Read 显然更加符合程序员的直觉,因 阅读全文

c++中sizeof的分析

2012-03-19 08:08 by Rollen Holt, 5417 阅读, 收藏, 编辑
摘要: sizeof是何方神圣sizeof乃C/C++中的一个操作符(operator)是也,简单的说其作用就是返回一个对象或者类型所占的内存字节数。MSDN上的解释为:The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value of type size_t. 其返回值类型为size_t,在头文件stddef.h中定义。这是一个依赖于编译系统的值,一般定义为. 阅读全文

C++ enum类型的一个更好的用法

2012-03-19 08:07 by Rollen Holt, 3793 阅读, 收藏, 编辑
摘要: enum类型是c++的一个基本的类型,用于声明可以枚举的常量.相对于C#的enum, c++的enum有几个缺陷:<!--[if !supportLists]-->1<!--[endif]-->不支持组合特性,也即FlagsAttribute属性;<!--[if !supportLists]-->2<!--[endif]-->不支持toString方法,转换为字符串需要特别的函数实现;<!--[if !supportLists]-->3<!--[endif]-->不支持命名空间的特性.前面的两个比较明显,我们只是讨论第3个 阅读全文

C++ template学习总结6

2012-03-08 11:53 by Rollen Holt, 512 阅读, 收藏, 编辑
摘要: 对于基本类型来说,并没有一个default模式来讲他们初始化为有意义的值,没有初始化的变量,其指都是未定义的,但是在模板这一块呢?我们可以采用下面的形式:template <typename T> void foo() { T x = T(); // x is zero (or false)ifT is a built-in type } 对于class template我们可以采用下面例子的方式:template <typename T> class MyClass { private: T x; public: MyClass() : x() { /... 阅读全文

c++ template归纳学习5

2012-03-08 11:20 by Rollen Holt, 550 阅读, 收藏, 编辑
摘要: 双重模板参数: 我们还是以前几篇中的Stack为例子i:代码如下: template <typename T, template <typename ELEM> class CONT = std::deque > class Stack { private: CONT<T> elems; // elements public: voi... 阅读全文

C++ template 学习归纳总结4

2012-03-08 10:57 by Rollen Holt, 521 阅读, 收藏, 编辑
摘要: 我们在这篇文章来说说typename关键字吧。这个关键字是在c++的标准化过程中引入的,目的在于说明template中的某个表示符号是一个类型,而不是其他的东西,看下面的代码:template <typename T> class MyClass { typename T::SubType * ptr; … }; 第一个typename我就不多说了,大家都知道,我来说一下第二个。他的意思是说T::SubType是class T内部定义的一个类型,从而ptr是一个指向【T:SubType类型】的指针。如果在上面的代码中,没有第二个typename关键字的话,编译器会以为SubType 阅读全文

c++ template学习总结3

2012-03-08 10:03 by Rollen Holt, 666 阅读, 收藏, 编辑
摘要: 和往常一样,先来看一段代码: #include <stdexcept> template <typename T, int MAXSIZE> class Stack { private: T elems[MAXSIZE]; // elements int numElems; // current number of elements ... 阅读全文

C++ template 学习归纳2

2012-03-07 16:15 by Rollen Holt, 616 阅读, 收藏, 编辑
摘要: 关于c++中的类模板,常见的形式为:template<typename T>class className{ //...};比如笔者在这里举一个例子:#include <iostream>#include<vector>#include <stdexcept>template<typename T>class stack{private: std::vector<T> elems;public: void push(T const&); void pop(); T top() const; bool empty() 阅读全文

C++.Templates学习总结归纳1

2012-03-07 14:22 by Rollen Holt, 643 阅读, 收藏, 编辑
摘要: 函数模板首先我们来看看函数模板,一个函数模板(function template)代表一族函数,其表现和一般的函数一样,只是其中的某些元素在编写的时候还不知道,也就是说这些还不知道的元素,我们将其参数化了。例如下面的返回两个数中的较大者:template<class T>inline T const& max(T const& a,T const& b){ return a>b?a:b;}当然,上述代码中的class也可以用typename所代替,但是不能使用struct代替。不过一般建议使用typename。举个可以实际运行的例子:#include 阅读全文

C++中四种显示类型转换总结

2012-03-05 20:21 by Rollen Holt, 559 阅读, 收藏, 编辑
摘要: #include <iostream>using namespace std;/* *四种显示类型转换 **/int main(){ /* static_case 类型转换*/ double a=1.1213; int b=static_cast<int>(a); class base{}; class father:public base{}; father f; base ba=static_cast<base>(f); /*reinterpret_cast类型转换*/ //基本类型的指针类型转换 double c=12.123; double* pc= 阅读全文

对话框

2011-11-24 20:36 by Rollen Holt, 761 阅读, 收藏, 编辑
摘要: 本例子涉及到了快捷键,信号,槽,读者自己看代码,我给出了框架。find.h文件代码如下:#ifndef FIND_H#define FIND_H#include <QtGui>#include "ui_find.h"class Find : public QDialog{ Q_OBJECTpublic: Find(QWidget *parent = 0, Qt::WFlags flags = 0); ~Find();signals: void findNext1(const QString &str,Qt::CaseSensitivity cs); vo 阅读全文