- 博客(50)
- 资源 (6)
- 收藏
- 关注
原创 C++ const函数返回值必须为const引用
编译正确代码:#include#include #includeusing namespace std;class T{ public: T(string p) { ptext = p; } const char & operator [](int pos) const { return ptext[pos]; } string ptext;
2013-04-30 15:15:31 6169 3
原创 C++类static静态成员变量和const常量成员变量(和引用相同)初始化方法
a为const常量成员c为static静态成员 常量和引用,必须通过参数列表进行初始化。 静态成员变量的初始化也颇有点特别,是在类外初始化且不能再带有static关键#include#includeusing namespace std;class T{ public: T(int b):a(b) { ; } const i
2013-04-30 10:02:28 1227
转载 linux下ioctl函数学习
一、 什么是ioctl。ioctl是设备驱动程序中对设备的I/O通道进行管理的函数。所谓对I/O通道进行管理,就是对设备的一些特性进行控制,例如串口的传输波特率、马达的转速等等。它的调用个数如下: int ioctl(int fd, ind cmd, …);其中fd就是用户程序打开设备时使用open函数返回的文件标示符,cmd就是用户程序对设备的控
2013-04-29 19:01:36 934
转载 Linux下的搜狗拼音输入法-fcitx sougopinyin
下载地址http://pan.baidu.com/share/link?shareid ... 4194345185http://www.163disk.com/filekey/tb43ca0b86http://vdisk.weibo.com/s/vP89E[/code]ubuntu12.04的fcitx版本不支持,不满足依赖,需要更新fcitx添加fcitx源
2013-04-29 09:52:58 5521
转载 socket中select函数的使用
Select在Socket编程中还是比较重要的,可是对于初学Socket的人来说都不太爱用Select写程序,他们只是习惯写诸如connect、accept、recv或recvfrom这样的阻塞程序(所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回)。可是使用Select就可以完成非阻塞(所
2013-04-24 18:56:26 919
转载 shutdown和close的区别
当所有的数据操作结束以后,你可以调用close()函数来释放该socket,从而停止在该socket上的任何数据操作:close(sockfd); 你也可以调用shutdown()函数来关闭该socket。该函数允许你只停止在某个方向上的数据传输,而一个方向上的数据传输继续进行。如你可以关 闭某socket的写操作而允许继续在该socket上接受数据,直至读入所有数据。
2013-04-22 22:46:06 747
转载 grep的用法
http://www.thegeekstuff.com/2009/03/15-practical-unix-grep-command-examples/ 首先创建我们练习grep命令时需要用到的demo文件demo_file。$ cat demo_fileTHIS LINE IS THE 1ST UPPER CASE LINE IN THIS FILE.this line is the 1
2013-04-22 15:04:22 715
转载 GDB 命令详细解释
http://blog.csdn.net.sixxs.org/wei801004/archive/2009/06/09/4253911.aspx GDB 命令详细解释 Linux中包含有一个很有用的调试工具--gdb(GNU Debuger),它可以用来调试C和C++程序,功能不亚于Windows下的许多图形界面的调试工具。 和所有常用的调试工具一样,gdb提供了以下功能:
2013-04-22 12:04:22 788
转载 TCP/IP协议栈的基本工作原理
TCP/IP是互联网的核心协议,也是大多数网络应用的核心协议。就前面一段时间面试中问到的TCP/IP问题,这里给出一个简单的小结。 TCP由RFC793、RFC1122、RFC1323、RFC2001、RFC2018以及RFC2581定义。 (1) TCP概述a. TCP提供的是面向连接的全双工服务。TCP所有的数据会匹配到由源地址,目的地址,源端口,目的端口构成的一个TC
2013-04-18 22:46:45 1015
原创 证明:当gcd(a, b) = 1,则gcd(a + b, a) = 1
假设: gcd(a, b) = 1证明: gcd(a + b, b) = 1反证法:假设gcd(a + b, b) = k != 1;则: b = k * r1a + b =a + k * r1 = k * R两边同时除以ka / k + r1 = R则要使相等,则a 必须整除k, 则 a = k * r2;所以gcd(a,
2013-04-16 21:13:58 3255 1
原创 C++当多次调用同一实参的模板,到底编译器实列化几次份代码的问题
提问:template void fun(T num){};如果调用fun(double(1.23));fun(int(1));编译器会实列化fun(double num)和fun(int num)但是我想问得是如果调用两次fun(int)fun(int(1));fun(int(2));编译器会实列两个fun(int),还是一个啊????疑惑至极。求好
2013-04-16 14:55:17 1334
转载 c++ 如何实现多态
#include #include #include #include using std::cerr;using std::cout;using std::string;//实覆盖class A1...{public: A1(string const& name) : m_Name(name) ...{cout << getName()
2013-04-15 22:05:56 857
转载 C++多态的实现原理
1. 用virtual关键字申明的函数叫做虚函数,虚函数肯定是类的成员函数。2. 存在虚函数的类都有一个一维的虚函数表叫做虚表。类的对象有一个指向虚表开始的虚指针。虚表是和类对应的,虚表指针是和对象对应的。3. 多态性是一个接口多种实现,是面向对象的核心。分为类的多态性和函数的多态性。4. 多态用虚函数来实现,结合动态绑定。5. 纯虚函数是虚函数再加上= 0。6. 抽象类是指包
2013-04-15 20:32:18 665
原创 当派生类和基类的虚构函数默认实参不同时的传递问题
当派生类和基类的虚构函数默认实参不同时;派生类的实参将接收基类传递过来的默认参数示列如下:#include #include #include using namespace std;class B{ public: virtual void fun(int num = 0) { cout << "B
2013-04-15 16:47:47 1098
原创 T t(2), T t = 2, T t = T(2)三者完全等价
T t(2), T t = 2, T t = T(2)三者完全等价#include #include #include using namespace std;class T{ public: T(){}; T(int t) { cout << "复制" << endl;
2013-04-15 16:21:34 927
原创 C++ 强制转换出现歧义问题
#include #include #include using namespace std;class T{ public: T(){}; T(int a){num = a;}; operator int const ()//将t + 3中的t转换为int型的10,变为10 + 3,也不会调用重载的<< { cout << "to be int:";
2013-04-15 11:37:08 1378
原创 C++运算符+,+=,<<,=重载范列
单操作符用返回引用,不能是友元函数,否则编译不通过双操作符,必须定义为友元,否则编译不通过测试编译器:g++ 4.6.3#include #include #include using namespace std;class T{ public: T(){}; T(int t) { a = t; }; T(const T &t)//当
2013-04-15 10:41:45 910
原创 hdfs安装和配置过程以及hadfs的工作原理(备忘)
在老师的帮助下,折腾了大半天终于把hdfs部署到ubuntu上去了。在这里记录一下各步骤备忘:在讲步骤之前,先总结一下自己对hadoop的工作你原理的理解:1.这个分布式系统是通过一个namenode(运行在master上的一个进程)来作为master来统筹管理多个作为slavers的datanode(运行在slavers上的一个进程);2.master将各slavers的实际
2013-04-12 23:46:36 15878 2
转载 hadoop在ubuntu下的安装配
前面均在windows下进行,但是在安装hadoop过程中出了一些问题,先暂时切换到linux下,回头再补充windows下的安装。不过通过对比确实发现,在linux下的安装配置确实比较简单。一.安装ubuntu 我是下载的ubuntu12.04,在64位的虚拟机上使用virtualbox安装的,没错,是在虚拟机上在安装虚拟机,然后安装ubuntu具体安装过程就不描述了,不过安装过程
2013-04-12 19:40:26 1128
转载 复制构造函数跟赋值构造函数的区别
1. 何时调用复制构造函数 复制构造函数用于将一个对象复制到新创建的对象中。也就是说,它用于初始化过程中,而不是常规的赋值过程中。类的复制构造函数原型通常如下: class_name(const class_name&); 它接受一个指向类对象的常量引用作为参数。例如,String类的复制构造函数的原型如下: String(const String&); 新建一个对象
2013-04-12 14:14:06 721
翻译 模板与泛型的区别
Visual C++ Language ReferenceGenerics and TemplatesGenerics and templates are both language features that provide support for parameterized types. However, they are different and have different
2013-04-12 11:25:28 4114 1
原创 ostream_iterator用法,以及unique_copy函数功能测试
#include #include #include #include using namespace std;int main(){ int s[8] = {6, 6, 1, 5, 2, 5, 3, 3}; vector vec(s,s+ 8); ostream_iterator out(cout, " "); unique_co
2013-04-12 10:14:51 1196
转载 ubuntu中apt-get的默认安装路径
apt-get 下载后,软件所在路径是什么??/var/cache/apt/archivesubuntu 默认的PATH为PATH=/home/brightman/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/gamesapt-get install安装目录是包的维护者确定
2013-04-12 09:56:05 2772
转载 hadoop常见问题 -localhost: Error: JAVA_HOME is not set
localhost: Error: JAVA_HOME is not set.启动start-all.sh时出现如下错误: root@ubuntu:/home/chenwq/hadoop/hadoop-0.21.0/bin# start-all.sh This script is Deprecated. Instead use start-dfs.sh and sta
2013-04-12 09:49:56 3636
原创 stl 顺序容器适配器之stack, priority_queue, queue用法
stack用法: stack也是程序设计中常常用到的数据容器,STL为我们提供了stack的实现,因此在使用stack时必须包含头文件,并使用统一命名空间。1.声明一个stack stack s1; stack s2;stack模板类需要2个模板参数,一个为元素类型,一个为容器类型,但是只有元素类型是必要的,在容器类型缺省时,默认为deque。2.st
2013-04-11 12:08:46 1722
转载 C++STL容器使用经验总结
第1条:慎重选择容器类型。标准STL序列容器:vector、string、deque和list。标准STL关联容器:set、multiset、map和multimap。非标准序列容器slist和rope。slist是一个单向链表,rope本质上是一“重型”string。非标准的关联容器hash_set、hase_multiset、hash_map和hash_multimap。v
2013-04-09 14:52:28 895
转载 STL顺序容器之deque双端队列
deque同vector一样也是顺序容器。它内部拥有更复杂的数据结构,从deque队列的两端插入和删除元素都非常快,在容器中间插入或删除则需要付出的代价非常高。deque的绝大部分操作与vector一致,如支持各种构造方式,push_back,insert,size,resize,empty,capacity等各种vector所支持的操作。并支持push_front(),pop_front()
2013-04-09 14:46:34 953
转载 STL顺序容器之vector类型
顺序容器:将单一类型元素聚集起来成为容器,然后根据位置来存储和访问这些元素,这就是顺序容器。顺序容器的元素排列与元素值无关,而是由元素添加到容器里的次序决定。标准库中定义了三种顺序容器类型:vector、list和deque(double-ended queue,双端队列),它们的差别在于访问元素的方式,以及添加或删除元素相关操作的运行代价。容器只定义了少量操作,大多数额外操作都是
2013-04-09 14:45:35 1264 2
原创 stl 顺序容器vector(priority_queue),顺序容器List,顺序容器deque(queue, stack)详解
三种容器均支持resieze()操作,重新划定容器大小,且此函数有重载。默认情况下:queue,stack是基于deque实现的,priority_queue是基于vector实现的。list是双向链表。map是红黑树实现的vector基本操作:vector v;//定义一个空容器vector v1(v);//将v通过构造函数拷贝给v1v.emp
2013-04-09 14:36:46 1755
原创 结构体对齐
#include #include #include #include #include #include using namespace std;struct T1{ long long c; short a; int b; char f; char d; char e;};struct T2{ int a; char b; char d; char e;
2013-04-08 19:25:55 1086
转载 stl 容器适配器、迭代器适配器和函数适配器讲解
一、迭代器list的迭代器不支持算术运算,也不支持关系运算符(=,>),他只提供前置和后置的自增、自减以及相等和不相等运算。list的内存不连续。vector和deque容器的迭代器是一种类型,vector能做的DEQUE也可以。二、容器适配器queue,priority_queue,stack.默认的queue和stack实在deque基础上实现,而PRIORITY_QUEU
2013-04-07 20:59:56 2261
转载 new/delete和malloc/free区别,能否交叉使用
对于用户自定义的对象而言,用maloc/free无法满足动态管理对象的要求。对象在创建的同时要自动执行构造函数,对象在消亡之前要自动执行析构函数。由于malloc/free是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free。因此C++需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete
2013-04-07 16:10:09 1037
转载 C/C++错误语法:void main( )
很多人甚至市面上的一些书籍,都使用了void main( ) ,其实这是错误的。C/C++ 中从来没有定义过void main( ) 。C++ 之父 Bjarne Stroustrup 在他的主页上的 FAQ 中明确地写着 The definition void main( ) { /* ... */ } is not and never has been C++, nor has it even
2013-04-07 11:31:54 14810
原创 C++ string类不能像C字符串能靠在i位赋值为‘\0’来截断
C++ string类不能像C字符串能靠在i位赋值为‘\0’来截断,因为'\0'在C字符串中才具有字符结束符的意义#include #include #include using namespace std;int main(){ string s("abcdefg"); s[3] = '\0';cout cout
2013-04-06 22:12:23 3180 1
转载 STL关联容器之Map
STL之Map概述Map是标准关联式容器(associative container)之一,一个map是一个键值对序列,即(key ,value)对。它提供基于key的快速检索能力,在一个map中key值是唯一的。map提供双向迭代器,即有从前往后的(iterator),也有从后往前的(reverse_iterator)。map要求能对key进行,因此map上的迭代器也是递
2013-04-06 21:03:24 1119
转载 stl map用法和make_pair函数
首先make_pairPairs C++标准程序库中凡是“必须返回两个值”的函数, 也都会利用pair对象 classpair可以将两个值视为一个单元。容器类别map和multimap就是使用pairs来管理其健值/实值(key/value)的成对元素。 pair被定义为struct,因此可直接存取pair中的个别值.
2013-04-06 20:26:57 38964
原创 typeid为type_info友元函数
typeid函数该函数的主要作用就是让用户知道当前的变量是什么类型的,比如使用typeid(a).name()就能知道变量a是什么类型的。因为typeid()函数是一个返回类型为const typeid_info&类型的函数,所以下面先对type_info类作下介绍type_info类该类的具体实现方式依编译器而定,但一般都有如下的成员定义class type_info{pri
2013-04-06 15:38:07 1237
原创 C++四种强制类型转换符功能以及用法总结(dynamic_cast,const_cast,static_cast,reinterpret_cast)
const_cast:用法:const_cast (expression)该运算符用来修改类型的const或volatile属性。除了const 或volatile修饰之外, type_id和expression的类型是一样的。一、指向常量的指针被转化成指向非常量的指针,并且仍然指向原来的对象;二、指向常量的引用被转换成指向非常量的引用,并且仍然指向原来的对象;Voiatile
2013-04-06 15:26:58 1113
转载 处世态度(有空的时候拿出来读一下)
1.永远没有一个人是你离不开的,现在离不开的,不代表永远离不开。没有什么是你放弃不了的,你不放弃的,可能会先放弃你也说不定。2.对付虚伪的人,不是骂ta,不是拆穿ta,而是让ta继续悲哀地虚伪着,然后装作什么也不知道。那么慢慢地,很多人会主动跑来告诉你ta有多虚伪。 3.对付自私的人,不是恨ta,不是不理ta,而是渐渐远离ta,从心底远离ta,然后装作什么都不知道。如果ta去找
2013-04-04 23:21:38 845
原创 后缀数组模板
参考大神:罗穗骞论文基本定义子串:字符串 S 的子串 r[i..j],i≤j,表示 r 串中从 i 到 j 这 一 段 ,也就是顺次排列 r[i],r[i+1],...,r[j]形成的字符串。后缀:后缀是指从某个位置 i 开始到整个串末尾结束的一个特殊子串。字4IOI2009 国家集训队论文符串r 的从后缀数组第 i 个字符开始的后缀表示为S
2013-04-04 23:06:41 2923 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人