Dreaming in C++
卧浪居士
尘世如潮人如水,只叹江湖几人回.
展开
-
华为(6)第一个只出现一次的字符
#include #include using namespace std;int main(){ string str; getline(cin,str); for(unsigned int i=0;i<str.length();++i) { char c=str[i]; int counts=1; for原创 2014-07-07 20:47:18 · 552 阅读 · 0 评论 -
STL(10)之advance组函数源码
1.函数说明: /** * @brief A generalization of pointer arithmetic. * @param __i An input iterator. * @param __n The @a delta by which to change @p __i. * @return Nothing. * * T原创 2014-06-30 14:25:44 · 678 阅读 · 0 评论 -
STL(8)之五种迭代器的类型
1. These are empty types, used to distinguish different iterators. The distinction is not made by what they contain, but simply by what they are. Different underlying algorithms can then be used b原创 2014-06-30 13:57:53 · 540 阅读 · 0 评论 -
STL(5)之Partial Specialization(模板的偏特化)
1.为什么要出现?按照原创 2014-06-27 15:41:21 · 824 阅读 · 0 评论 -
《从菜鸟到测试架构师》简要总结(4)----开发人员测试
《从菜鸟到测试架构师》简要总结(4)----开发人员测试1.原创 2014-06-19 16:22:23 · 575 阅读 · 0 评论 -
STL(6)之Traits编程技法 与迭代器
1.Traits编程技法说白了是利用上篇所用到的偏特化概念来实现的!2.原创 2014-06-27 16:21:45 · 520 阅读 · 0 评论 -
STL(7)之find() Algorithms源码
1.暂时讲解最简单的原创 2014-06-27 16:34:17 · 568 阅读 · 0 评论 -
STL(4)之Removing Algorithms
1.Removing Algorithms:原创 2014-06-26 15:34:12 · 399 阅读 · 0 评论 -
STL(3)之for_each算法实现
STL之for_each算法实现原创 2014-06-25 12:24:38 · 516 阅读 · 0 评论 -
STL(2) 关联容器之Set和Multiset几个要点
1.虽然STL并未明确说明他们的内部实现,但是多为红黑树;2.容器的元素类型与其排序标准必须拥有相同的类型,否则会在编译器发生类型错误;3.几个特别的查找算法。相对于普适的具有线性复杂度的算法来说,其具有对数的复杂度,是由于其内部实现的机制决定的。c.lower_bound(val);返回一个不小于val的迭代器位置;c.upper_bound(val);返回一个大于val的迭代器原创 2014-02-25 09:31:13 · 546 阅读 · 0 评论 -
STL (1)的缺点
STL本身体现的核心思想是泛型编程的思想,而不再是面向对象编程了。当然这种数据与方法的分离带来的好处是显而易见的,减少了大量重复性的代码,并且增加了库的灵活性,使之更加强大!但是,这种便利与强大也是有代价的。1.这种用法,不再是直观的。2.一些数据结构与算法结合起来可能不能工作。3.有些容器类型与算法结合起来,可能不是有用的,因为其性能比较低! 所以,再选用数据结构与原创 2014-02-18 19:29:07 · 695 阅读 · 0 评论 -
CentOS下C++编程(1)--一个完整的小程序
#include int main(){std::coutstd::coutstd::coutint a;std::cin>>a;if(a>1)std::coutelsestd::coutreturn 0;}原创 2014-04-16 14:56:38 · 4102 阅读 · 0 评论 -
基本语言细节-----程序在内存中的分布
基本语言细节-----程序在内存中的分布(转互联网)在现代的操作系统中,当我们说到内存,往往需要分两部分来讲:物理内存和虚拟内存。从硬件上讲,虚拟空间是CPU内部的寻址空间,位于MMU之前,物理空间是总线上的寻址空间,是经过MMU转换之后的空间。一般我们所说的程序在内存中的分布指的就是程序在虚拟内存中的存储方式。从低地址到高地址,可分为下面几段: 预留内存地址(操作系统维护原创 2014-04-01 18:33:28 · 544 阅读 · 0 评论 -
基本语言细节--C语言标准库函数 atoi ()
基本语言细节--C语言标准库函数 atoi ()1. C语言库函数名: atoi,功 能: 把字符串转换成整型数。名字来源:ASCII to integer 的缩写。 原型: int atoi(const char *nptr);2.下面由自己动手编写一个实现此功能的函数 首先考虑测试用例:原创 2014-03-31 13:53:22 · 1153 阅读 · 0 评论 -
STL(9)之distance函数组源码
1.输入迭代器的版本:原创 2014-06-30 14:16:35 · 761 阅读 · 0 评论 -
缓冲区溢出漏洞攻击
1.栈随机化;2.原创 2014-07-01 20:35:15 · 556 阅读 · 0 评论 -
华为(9)输入n个整数,输出其中最小的k个
#include using namespace std;bool GetMinK(unsigned int uiInputNum, int * pInputArray, unsigned int uiK, int * pOutputArray){ if(NULL==pInputArray || NULL==pOutputArray) { return fal原创 2014-07-08 10:06:20 · 619 阅读 · 0 评论 -
华为(5)单词倒排
#include #include using namespace std;int main(){ string str; getline(cin,str); int pos1=0; int pos2=int(str.length()-1); for(int i=int(str.length()-1);i>=0;--i) {原创 2014-07-07 20:23:12 · 688 阅读 · 0 评论 -
华为(8)查找两个字符串a,b中的最长公共子串
#include #include using namespace std; static string iQueryMaxCommString(string &stringA, string stringB) { unsigned int lengthA=stringA.length(); unsigned int lengthB=stringB.length();原创 2014-07-08 09:26:44 · 931 阅读 · 0 评论 -
华为(4)数字颠倒
#include using namespace std;int RevertNum(unsigned int inputNum, char *pOutNum){ int i=0; if(inputNum<0) return -1; while(inputNum) { pOutNum[i]=48+inputNum%10;原创 2014-07-07 19:26:53 · 744 阅读 · 0 评论 -
华为(·11)单词倒排
#include #include using namespace std;void ReverseStringWord(const string &str){ int pos1=0; int pos2=int(str.length()-1); for(int i=int(str.length()-1);i>=0;--i) { if( (str[i]原创 2014-07-08 16:01:52 · 1285 阅读 · 0 评论 -
华为(7)小球落地高度
#include #include using namespace std;static double getJourney(int high){ return 2.875*high;}static double getTenthHigh(int high){ return 0.5*0.5*0.5*0.5*0.5*high;}int main()原创 2014-07-08 08:59:14 · 663 阅读 · 0 评论 -
华为(10)字符串排序无视大小写
#include #include using namespace std;void SortString(const string &str){ string strEnglishchar; for(unsigned int i=0;i<str.length();++i) { if('a'=str[i]) strEnglis原创 2014-07-08 14:31:04 · 609 阅读 · 0 评论 -
关于Segmentation fault的问题
关于Segmentation fault的问题原创 2014-05-30 12:05:01 · 1043 阅读 · 0 评论 -
华为(2)输出一个整数中二进制1的个数
#include #include #include using namespace std;static int findNumberOf1(int num){ bitset x(num); int count1=0; for(int i=0;i<32;++i) { if(true==x[i]) ++count1;原创 2014-07-03 13:14:45 · 548 阅读 · 0 评论 -
华为(3)表示数字
#include #include using namespace std;static int MarkNum(string &str){ string mark_str; for(unsigned int i=0;i<str.length();++i) { if('0'=str[i]) { if('*'=原创 2014-07-03 13:50:52 · 617 阅读 · 0 评论 -
华为(1)给出字符串中最后一个单词的字符串数目
#include #include using namespace std;int main(){ string str; getline(cin,str); string::size_type pos=str.rfind(' '); string::size_type length=str.length(); if('a'= 'z')原创 2014-07-03 12:49:43 · 505 阅读 · 0 评论 -
Linux下搭建编程环境----CentOS下升级安装GCC4.9.0
Linux下搭建编程环境----CentOS下升级安装GCC4.9.01.原创 2014-05-29 14:02:56 · 1108 阅读 · 0 评论 -
函数指针为何如此定义
1.int (*f)(int x);(*f)表明f是一个指针,而(*f)(int x)原创 2014-07-01 20:41:17 · 516 阅读 · 0 评论 -
Stack的三种含义
学习编程的时候,经常会看到stack这个词,它的中文名字叫做"栈"。理解这个概念,对于理解程序的运行至关重要。容易混淆的是,这个词其实有三种含义,适用于不同的场合,必须加以区分。含义一:数据结构stack的第一种含义是一组数据的存放方式,特点为LIFO,即后进先出(Last in, first out)。在这种数据结构中,数据像积木那样一层层堆起来,后面加入原创 2014-03-07 15:45:59 · 670 阅读 · 0 评论 -
基本语言细节--C语言标准库函数strcpy
基本语言细节--C语言标准库函数strcpy1.介绍原型声明:extern char *strcpy(char* dest, const char *src);头文件:#include string.h>功能:把从src地址开始且含有NULL结束符的字符串复制到以dest开始的地址空间说明:src和dest所指内存区域不可以重叠且dest必须有足够的空间来容纳src的字符串。原创 2014-03-12 16:10:42 · 738 阅读 · 0 评论 -
基本语言细节--《深度探索C++对象模型》--(6)Runtime Semantics-总结点
基本语言细节--《深度探索C++对象模型》--(6)Runtime Semantics-总结点1.注意开篇所讲的编译器产生的代码,里边有很多临时性对象,应理解编译器在背后为我们做了什么!正如Lippman所讲,这是C++一件困难的事情,不太容易从程序源码中看出表达式的复杂度。2.全局对象: C++程序中所有的的全局对象都被放在数据段,并且其值要么是由程序员显式指定的,要么是内存内容原创 2013-11-21 13:12:34 · 1038 阅读 · 0 评论 -
基本语言细节--《深度探索C++对象模型》--(5)Semantics of Construction,Destruction,and Copy-总结点
基本语言细节--《深度探索C++对象模型》--(5)Semantics of Construction,Destruction,and Copy-总结点1.继承体系下的对象构造顺序: Constuctor可能含有大量的隐藏代码,因为编译器会扩充每一个constructor,一般而言扩充早错大约如下: (1).记录在成员初始化列表中的数据成员初始化操作会被放在构造函数的本体内,原创 2013-11-21 12:34:50 · 1173 阅读 · 0 评论 -
基本语言细节--《深度探索C++对象模型》----总结
基本语言细节--《深度探索C++对象模型》----总结1.简要的对象模型实现;2.掌握构造函数何时会是nontrivial,什么是按位逐次拷贝及其何时失效,copy constructor何时调用以及NRV优化;3.对象大小的由来,数据成员的布局;4.静态成员函数,非静态成员函数的调用,以及虚函数机制的实现,内联函数的影响(临时性对象的管理);5.构造顺序,析构顺序,以及虚函数原创 2013-11-21 13:43:18 · 721 阅读 · 0 评论 -
基本语言细节--《深度探索C++对象模型》--(7)On the Cusp of the Object Model-总结点
基本语言细节--《深度探索C++对象模型》--(7)On the Cusp of the Object Model-总结点1.模板相关:何时进行实例化、模板的错误报告;2.异常处理:3.运行期的类型识别。卧浪居士 于HUST2013.11.21原创 2013-11-21 13:23:37 · 1065 阅读 · 0 评论 -
基本语言细节--《深度探索C++对象模型》--(4)The Semantics of Function-总结点
基本语言细节--《深度探索C++对象模型》--(4)The Semantics of Function-总结点1.Member 的各种调用方式 (1).非静态成员函数调用: C++设计准则就是非静态函数的调用效率至少和一般的非成员函数有相同的效率。其实,编译器对C++的成员函数,进行了一系列的处理,使得最后,一个成员函数成为了一个外部函数,以extern说明,并经过name-原创 2013-11-20 14:09:20 · 852 阅读 · 0 评论 -
基本语言细节--《深度探索C++对象模型》--(2)The Semantics of Constructors--总结点
主要是针对Lippmen 书中C++中构造函数以及复制构造函数的论述做一个大致总结,以期说明编译器在C++语言背后为我们做了哪些事情!原创 2013-11-20 13:12:53 · 1118 阅读 · 0 评论 -
基本语言细节--《深度探索C++对象模型》--(3)The Semantics of Data--总结点
基本语言细节--《深度探索C++对象模型》--(3)The Semantics of Data--总结点1.空类的大小来源: (1).语言本身所造成的额外负担----如:支持虚基类以及虚函数; (2).编译器对于特殊情况所提供的优化处理;---如公有的虚基类; (3).边界调整。2.Data Member 的布局: (1).非静态的成员变量在对象中排列顺序与其原创 2013-11-20 13:38:40 · 899 阅读 · 0 评论 -
基本语言细节--inline函数的几点分析
基本语言细节--inline函数的几点分析1.定义:内联函数从源代码层看,有函数的结构,而在编译后,却不具备函数的性质。内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。编译时,类似宏替换,但比宏更安全,使用函数体替换调用处的函数名。一般在代码中用inline修饰,但是能否形成内联函数,需要看编译器对该函数定义的具体处理。2.好处:内联扩展是用来消除函数调用时的时间原创 2013-11-14 16:22:21 · 1077 阅读 · 0 评论 -
基本语言细节--《深度探索C++对象模型》--(1)Object Lessions----总结点
基本语言细节--《深度探索C++对象模型》(1)Object Lessions--总结点 1.C++与C相比效率损耗来源 (1)、virtual function 机制------用以支持一个有效率的“执行期绑定”; (2)、virtual base class 用以实现“出现在继承体系中的base clas原创 2013-11-19 21:05:28 · 1261 阅读 · 0 评论