- 博客(35)
- 资源 (11)
- 收藏
- 关注
原创 华为题目(四则运算)
#include #include #include #include using namespace std;stack opnd;stack optr;bool IsOptr(char c){ string optr = "+*-/()"; if(optr.find(c) == string::npos) return false; return true;}ch
2014-08-06 21:10:33
640
转载 STL hash_map 底层初探
hash_map 底层是采用hashtable实现的,在讲解hash_map之前,先看一下hash_table的原理。(1)hashtable数据结构hash table表格内的元素称为桶(bucket),而由桶所链接的元素称为节点(node),其中存入桶元素的容器为stl本身很重要的一种序列式容器——vector容器。之所以选择vector为存放桶元素的基础容器,主要是因为vec
2014-07-27 17:28:20
773
转载 面试题:一个短小强悍的C++面试题---违背Effective C++的条款37:绝不重新定义继承而来的缺省参数值
转自:http://blog.youkuaiyun.com/xhu_eternalcc/article/details/21601477
2014-07-25 21:28:50
569
转载 “浅拷贝”与“深拷贝”
C++中对象的复制就如同“克隆”,用一个已有的对象快速地复制出多个完全相同的对象。一般而言,以下三种情况都会使用到对象的复制:(1)建立一个新对象,并用另一个同类的已有对象对新对象进行初始化,例如:[cpp] view plaincopyclass Rect { private: int width; int height; }; R
2014-06-21 22:24:37
358
转载 数组和指针的区别
C++/C程序中,指针和数组在不少地方可以相互替换着用,让人产生一种错觉,以为两者是等价的。 数组要么在静态存储区被创建(如全局数组),要么在栈上被创建。数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是“可变”,所以我们常用指针来操作动态内存。指针远比数组灵活,但也更危险。下面以字符串为例比较
2014-06-21 21:46:48
438
转载 程序员笔试知识点整理
0、常考基础必知必会A. 排序:排序有几种,各种排序的比较,哪些排序是稳定的,快排的算法;B. 查找:哈希查找、二叉树查找、折半查找的对比,哈希映射和哈希表的区别?C. 链表和数组的区别,在什么情况下用链表什么情况下用数组?D. 栈和队列的区别?E. 多态,举例说明;overload和override的区别?F. 字符串有关的函数,比如让你写一个拷贝字符串的函数啊,或者字符
2014-06-14 21:33:32
1251
转载 C++ 内存分配(new,operator new)详解
本文主要讲述C++ new运算符和operator new, placement new之间的种种关联,new的底层实现,以及operator new的重载和一些在内存池,STL中的应用。一 new运算符和operator new(): new:指我们在C++里通常用到的运算符,比如A* a = new A; 对于new来说,有new和::new之分,前者位于std
2014-06-14 16:02:08
518
转载 static_cast与dynamic_cast
一 C语言中存在着两种类型转换:隐式转换和显式转换隐式转换:不同数据类型之间赋值和运算,函数调用传递参数……编译器完成char ch;int i = ch;显示转换:在类型前增加 :(Type)变量 对变量进行的转换。用户显式增加char *pc = (char*)pb;void *ps = (void*)pa;二 C++中的类型转换
2014-06-09 21:17:49
547
原创 memset和memcpy、memmove实现
void* _memset(void* des, const unsigned char c, size_t count){assert(des != NULL);char* temp = (char*)des;while(count-->0){*temp++ = c;}return des;}void* _memcpy(void* des, voi
2014-05-28 18:54:41
620
原创 趋势科技笔试结束
昨天参加了趋势科技的夏令营笔试,第一道题目就是数据库的连接问题,所以需要总结一下四个连接: 1. 数据库连接 1).内联接 使用INNER JOIN ...ON...,也可以用WHERE,举个例子: SELECT vend_name, prod_name, prod_price FROM vendors INNER JOIN products ON vend
2014-05-26 22:27:10
761
原创 关于C++的基础易错知识(源于各种笔试题,自己要记得不断更新)
关于指针分配内存的题目:void GetMemory(char *p) { p = (char *)malloc(11); } int main(void) { char *str = "Hello"; GetMemory(str); strcpy(str,"Hello World"); printf("%s",
2014-05-10 19:31:18
632
转载 Ackerman函数
阿克曼函数是非原始递归函数的例子;它需要两个自然数作为输入值,输出一个自然数。它的输出值增长速度非常高,仅是(4,3)的输出已大得不能准确计算。1920年代后期,数学家大卫·希尔伯特的学生Gabriel Sudan和威廉·阿克曼,当时正研究计算的基础。Sudan发明了一个递归却非原始递归的Sudan函数。1928年,阿克曼又独立想出了另一个递归却非原始递归的函数。他最初的念头是一个三个
2014-04-12 10:38:06
1140
转载 常考笔试题,详细解剖C++运算符sizeof()的使用及字节对齐问题
先看题目:[cpp] view plaincopystruct A{ char c1; short s1; char c2; float f1; double d1; }; struct B{ char c1; c
2014-04-10 20:52:02
605
转载 二分查找
二分查找算法基本思想二分查找算法的前置条件是,一个已经排序好的序列(在本篇文章中为了说明问题的方便,假设这个序列是升序排列的),这样在查找所要查找的元素时,首先与序列中间的元素进行比较,如果大于这个元素,就在当前序列的后半部分继续查找,如果小于这个元素,就在当前序列的前半部分继续查找,直到找到相同的元素,或者所查找的序列范围为空为止.用伪代码来表示, 二分查找算法大致是这个样子的:
2014-04-09 13:04:42
574
转载 TCP三次握手及四次挥手详细图解
相对于SOCKET开发者,TCP创建过程和链接折除过程是由TCP/IP协议栈自动创建的.因此开发者并不需要控制这个过程.但是对于理解TCP底层运作机制,相当有帮助. 而且对于有网络协议工程师之类笔试,几乎是必考的内容.企业对这个问题热情之高,出乎我的意料:-)。有时上午面试前强调这个问题,并重复讲一次,下午几乎每一个人都被问到这个问题。 因此在这里详细解释一下
2014-04-08 22:33:22
497
转载 给定一个数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在构造过程中,不允许使用除法
给定一个数组a[N],我们希望构造数组b [N],其中b[j]=a[0]*a[1]…a[N-1] / a[j],在构造过程中,不允许使用除法;要求:O(1)空间复杂度和O(n)的时间复杂度;除遍历计数器与a[N] b[N]外,不可使用新的变量(包括栈临时变量、堆空间和全局静态变量等)虽然不能使用临时变量,但是可以用数组本身的某一个元素,不让用除法,应该想到迭代的用乘法,而且b中每个
2014-04-08 15:18:02
738
转载 浅析C++中的this指针
有下面的一个简单的类:class CNullPointCall{public: static void Test1(); void Test2(); void Test3(int iTest); void Test4();private: static int m_iStatic; int m_iTest;};
2014-04-06 16:34:43
455
转载 const修饰指针和引用的用法
const修饰指针和引用的用法,对于初学C++的人直是讳莫如深,不知所云. 一旦你了解了其用法,一切便不值一哂了.下面我为读者一一释疑: 大致说来其可分为三种情况: const修饰指针,const修饰引用,const修饰指针的引用. 1.const修饰指针 const修饰指针又可分为三种情况: a.const修
2014-04-04 10:54:54
1630
转载 堆和栈的区别
一、预备知识—程序的内存分配 一个由C/C++编译的程序占用的内存分为以下几个部分 1、栈区(stack)— 由编译器自动分配释放 ,存放函数的参数值,局部变量的值等。其 操作方式类似于数据结构中的栈。 2、堆区(heap) — 一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回 收 。注意它与数据结构中的堆是两
2014-03-06 14:02:39
469
转载 debug版本和release版本的区别
这是从百度知道里面截出来的,mark一下,要好好记住。Debug通常称为调试版本,它包含调试信息,并且不作任何优化,便于程序员调试程序。Release称为发布版本,它往往是进行了各种优化,使得程序在代码大小和运行速度上都是最优的,以便用户很好地使用。Debug 和 Release 的真正秘密,在于一组编译选项。下面列出了分别针对二者的选项(当然除此之外还有其他一些,如/Fd /Fo,
2014-03-06 13:39:24
559
转载 桶排序
桶排序 (Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将阵列分到有限数量的桶子里。每个桶子再个别排序(有可能再使用别的排序算法或是以递回方式继续使用桶排序进行排序)。桶排序是鸽巢排序的一种归纳结果。当要被排序的阵列内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是 比较排序,他不受到 O(n log n) 下限的影响。 例如要对大小为[1
2014-02-27 21:19:32
420
转载 出栈序列统计
栈是一种常见的数据结构,有许多关于栈的问题,其中之一就是统计元素可能的出栈序列。具体说,就是给定n个元素,依次通过一个栈,求可能的出栈序列的个数。如果我们用直接模拟的方法,当n较大时会很费时间;另一种方法是利用组合数学求出栈序列个数,得到公式 下面我们来看一种图形化的方法证明这个等式,很容易理解的。 我们把对n个元素的n次进栈和n次出栈理解为在一个
2014-02-23 20:49:13
976
转载 new和malloc(转)
1、malloc与free是C++/C语言的内存分配标准库函数,属于stdlib库;new/delete是C++的操作运算符。它们都可用于申请动态内存和释放内存。 2、 对于非内部数据类型的对象而言,光用maloc/free无法满足动态对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不
2014-02-22 20:07:58
716
转载 深入探讨C++中的引用(转)
摘要:介绍C++引用的基本概念,通过详细的应用分析与说明,对引用进行全面透彻地阐述。 关键词:引用,const,多态,指针 引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵活地使用引用,可以使程序简洁、高效。我在工作中发现,许多人使用它仅仅是想当然,在某些微妙的场合,很容易出错,究其原由,大多因为没有搞清本源。故在本篇中我将对引用进行详细讨论,希望对大家更好地理解
2014-01-02 20:19:21
427
原创 重载运算符函数的选择
正如C++ Primer中的例子,当重载 + 时不需要设置为友元,因为可以用public成员operator += 实现,这说明:首先,重载运算符为成员函数时相当于提供一个接口,一定是public的;其次,就是不是一定要声明为friend的,要据具体情况而定。 当重载运算符为成员函数时,如果遇到调用时第一操作数是数字,则会因为不能进行类型转换而报错,这时通常建议重载为友元函数。当然也可以
2014-01-02 20:18:38
602
转载 C++箴言:声明为非成员函数的时机(转)
我谈到让一个类支持隐式类型转换通常是一个不好的主意。当然,这条规则有一些例外,最普通的一种就是在创建数值类型时。例如,如果你设计一个用来表现有理数的类,允许从整数到有理数的隐式转换看上去并非不合理。这的确不比 C++ 的内建类型从 int 到 double 的转换更不合理(而且比 C++ 的内建类型从 double 到 int 的转换合理得多)。在这种情况下,你可以用这种方法开始你的 Rati
2014-01-02 19:22:48
484
转载 C++ Primer之最佳实践
1. 语言本身并没有限制变量名的长度,但考虑到将会阅读和/或修改我们的代码的其他人,变量名不应太长2. 命名习惯最重要的是保持一致3. 初始化不是赋值。初始化是指创建变量并给它赋初值,而赋值则是擦除对象的当前值并用新值代替4. 变量必须且仅能定义一次,而且在使用变量之前必须定义或声明变量5. 通常把一个对象定义在它首次使用的地方是一个很好的办法6. 头文件应
2013-12-29 21:28:34
1107
转载 C++基础 - 内置类型和类类类型的初始化
#include #include #include using namespace std;int global_n; // 函数体外的内置类型变量被自动初始化为0//////////////////////////////////////////////////////////////////////////// 系统将提供一个默认构造函数来构造C
2013-12-28 21:49:20
571
转载 C++中各种类型的成员变量的初始化方法(转)
----------------Test.h----------------------------#pragma onceclass Test{private : int var1;// int var11= 4; 错误的初始化方法 const int var2 ;// const int var22 =22222; 错误的初始化方法
2013-12-28 20:52:21
485
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人