摘要:
1、五种迭代器。输入迭代器重载 *、== 、!= 、前置++、后置++运算符。STL提供的主要输入迭代器是 istream_iterator 。它有两种构造函数:istream_iterator() :创建一个流结束的迭代器istream_iterator(istream& ):参数是输入流,含义是从输入流中读数据,当遇到流结束符时停止。 #include <iostream> #include <iterator> using namespace std; int main() { cout<<"Please Input(int): &q 阅读全文
摘要:
插入迭代器 插入迭代器是一种迭代器适配器,带有一个容器参数,并生成一个迭代器,用于在指定的容器中插入元素。通过插入迭代器赋值时,迭代器将会插入一个新的元素。C++语言提供了三种插入器,其差别在于插入元素的位置不同: 1)back_inserter,创建使用push_back实现插入的迭代器; 2)front_inserter,使用push_front实现插入; 3)inserter,使用insert实现插入操作。除了所关联的容器外,inserter还带有第二个实参:指向插入起始位置的迭代器。 front_inserter的操作类似于back_inserter:该函数将创建一个迭代器,调用它所关 阅读全文
摘要:
1.下载 mysql++-3.1.0.tar.gz,解压,如:c:\mysql++-3.1.02、mysql++-3.1.0 目录下进入相应 Visual Studio 版本(VS2003,VS2005,VS2008。VS2010可以使用VS2008),打开解决方案,这里以VS2008为例。3、把mysql++设为启动项目,生成时可能会报错:错误为“无法打开libmysql.lib”4、在mysql安装目录下找到libmysql.lib,复制到 C:\Program Files\Microsoft Visual Studio 9.0\VC\lib (这里以VS2008为例),再次生成成功。5、 阅读全文
摘要:
1、异常捕获: #include #include using namespace std; void fun(int i) { if(i using namespace std; int main() { int i = -3; if(i >= 0) { cout int main() { int i = -1; assert(i>0); }断言中条件如果为 false,会直接导致程序退出。同样的,在编译时使用: g++ test.cpp -o test -DNDEBUG 则会忽略断言。a... 阅读全文
摘要:
1、boost::progress_timer作用与使用:继承自 boost::timer ,作用相同,只是其在析构函数中会输出流逝的时间,所以在使用时,只需要声明 progress_timer 对象即可,当对象离开其生命期时,会自动输出流逝时间。在同一个小程序里测量多个时间,可以加上花括号来限定其生命期即可。注:progress_timer 的构造函数是: progress_timer(std::ostream& os = std::cout),所以你也可以让它输出到指定的IO流里。另,它的输出精度只有小数点后两位。 1 #include <iostream> 2 #in 阅读全文
摘要:
作用:用来计时。使用方法:timer类初始化时,开始计时。调用 elapsed() 时计时结束,返回 double 型,单位为秒。调用 restart() 重新开始计时。注:elapsed_max() 和 elapsed_min() 这两个函数用来输出该类能计时的最大和最小范围,前者单位是小时,后者是秒。测试精度是由操作系统或编译器决定的。1.49版的精度为:最大:2.14748e+09(h) 最小:1e-06(s) #include <iostream> #include <boost/timer.hpp> int main() { boost::timer t; / 阅读全文
摘要:
1、同步: #include <iostream> #include <boost/asio.hpp> #include <boost/date_time/posix_time/posix_time.hpp> using std::cout; using std::endl; int main() { boost::asio::io_service io; boost::asio::deadline_timer t(io,boost::posix_time::seconds(5)); t.wait(); cout<<"Hello,wor 阅读全文
摘要:
1、在 C++ 中,基类必须指出希望派生类重写哪些函数,定义为 virtual 的函数是基类期待派生类重新定义的,基类希望派生类继承的函数不能定义为虚函数。2、要触发动态绑定,满足两个条件:第一,必须指定为虚函数;第二必须通过基类类型的引用或指针进行函数调用。除了构造函数之外,任意非 static 成员函数都可以是虚函数。保留字只在类内部的成员函数声明中出现,不能用在类定义体外部出现的函数定义上。一般而言,派生类只(重)定义那些与基类不同或扩展基类行为的方面。 #include <iostream> using namespace std; class Father { pu... 阅读全文
摘要:
1、客户需求重于个人简历:不要为了学习新的知识或丰富自己的简历而选择新技术解决问题,要尽量选择切合实际的技术解决客户的难题。脚踏实地的为客户着想,选择正确的方案可以降低项目的压力,团队工作起来更开心,客户也会更满意,从而你也会有更充裕的时间学习新的知识。2、简化根本复杂性,消除偶发复杂性:根本复杂性是问题本身就很复杂,所以它是无法避免的。偶发复杂性是在解决根本复杂性的过程中衍生的,即解决方案本身带来的新问题。如为了解决某个问题而设计的一个软件框架,设计该框架本身,就是引入的偶发复杂性。所以,如果原本问题比较简单,但设计或引入一个太过灵活的框架,可能得不偿失。(避免过度设计)3、关键问题可能不是 阅读全文
摘要:
1、构造函数:构造函数的工作是保证每个对象的数据成员具有合适的初始值。class Father{ public: Father(int _i):i(_i),j(3){} //在构造函数中,初始化那些未动态赋值的成员变量。 private: int i; int j;};类的定义以分号结束是必需的,因为在类定义之后可以接一个对象定义列表。class Father{/*...*/};class Father{/*...*/} obj1,obj2;但通常,将对象定义成类定义的一部分是个坏主意。2、成员函数:在类内部定义的函数默认为 inlin... 阅读全文
摘要:
容器的构造函数:C c; //默认构造函数,通用 C c(c2); //创建容器 c2 的副本,通用C c(b, e); //根据迭代器 b, e 的范围(不包括e)生成容器,通用C c(n, t); //使用 n 个值为 t 的元素生成容器,只适用于顺序容器C c(n); //创建 n 个初始化元素的容器,只适用于顺序容器。采用这种类型的初始化,元素类型必须是内置或复合类型,或者是提供了默认构造函数的类类型。如果元素类型没有默认构造函数,则必须显式指定其元素初始化式。我们知道指针就是迭代器,因此允许通过使用内置数组中的一对指针初始化容器也就不奇怪了:... 阅读全文
摘要:
#include "boost/smart_ptr.hpp"相当于同时 include 了各个智能指针(请查看smart_ptr.hpp源文件)class User{ void print() { std::cout<<"test"<<std::endl; }};int main(){typedef boost::share_ptr<User> UserPtr; boost::shared_ptr<User>(new User) user_ptr1;boost::shared_ptr<User> 阅读全文
摘要:
带命令行参数的 C++ 程序:#include #include int main(int argc,char* argv[]){ std::cout 1) { std::cout>input){ sum += input;}coutint main(){ extern const double pi; extern int i; int getadd(int,int); //或:extern int getadd(int,int); std::cout> word) cout ::size_type ... 阅读全文
摘要:
让程序暂停的简单写法: cin.get();cout.put(65); //输出 A头文件 iostream 中提供了控制符 dec 、hex 和 oct,分别指示十进制的、十六进制和八进制格式显示整数。默认为十进制,在修改格式之前,原来的格式将一直有效:如:cout<<hex<<11<<endl; //b表示各种整型的系统限制的climits文件,可以直接输出 INT_MAX、SHRT_MAX、LONG_MAX、INT_MIX 和 CHAR_BIT等来查看一些整型信息。共用体:类似于结构,但不同是只能同时表示一个变量。由于共用体每次只能存储一个值,因此其长 阅读全文
摘要:
http://www.cnblogs.com/csyisong/archive/2009/01/09/1372363.htmlhttp://www.cnblogs.com/csyisong/archive/2009/01/09/1372382.html不管实在C还是C++代码中,typedef这个词都不少见,当然出现频率较高的还是在C代码中。typedef与#define有些相似,但更多的是不同,特别是在一些复杂的用法上,就完全不同了,看了网上一些C/C++的学习者的博客,其中有一篇关于typedef的总结还是很不错,由于总结的很好,我就不加修改的引用过来了,以下是引用的内容(红色部分是我自己 阅读全文
摘要:
引导工具:unetbootin (only linux)syslinux (all)UltraISO (all)epel-releasewget http://dag.wieers.com/rpm/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm# rpm -ivh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpmyum install ntfs-3g更新软件源:sudo cp /etc/apt/sources.list /etc/apt/sources.... 阅读全文
摘要:
Linux 全称: GNU/Linux备份系统:tar cvpzf backup.tar.gz --exclude=/proc --exclude=/lost+found --exclude=/backup.tgz --exclude=/mnt --exclude=/sys --exclude=/media/还原系统:# tar xvpfz backup.tar.gz -C /然后新建之前没有备份的目录,如 mkdir proc 等。配置软件源:sudo vi /etc/apt/sources.list#163源deb http://mirrors.163.com/ubuntu/ precis 阅读全文
摘要:
作用在TCP/IP协议族中,链路层主要有三个目的:(1)为IP模块发送和接收IP数据报;(2)为ARP模块发送ARP请求和接收ARP应答;(3)为RARP发送RARP请求和接收RARP应答。TCP/IP支持多种不同的链路层协议,这取决于网络所使用的硬件,如以太网、令牌环网、FDDI(光纤分布式数据接口)及RS-232串行线路等。以太网和IEEE 802封装以太网这个术语一般是指数字设备公司( Digital Equipment Corp.)、英特尔公司和Xerox公司在1982年联合公布的一个标准。它是当今TCP/IP采用的主要的局域网技术。它采用一种称作CSMA/CD的媒体接入方法,其意思是 阅读全文
摘要:
分层TCP/IP通常被认为是一个四层协议系统,每一层负责不同的功能:1) 链路层,有时也称作数据链路层或网络接口层,通常包括操作系统中的设备驱动程序和计算机中对应的网络接口卡。它们一起处理与电缆(或其他任何传输媒介)的物理接口细节。2) 网络层,有时也称作互联网层,处理分组在网络中的活动,例如分组的选路。在TCP/IP协议族中,网络层协议包括IP协议(网际协议),ICMP协议(Internet互联网控制报文协议),以及IGMP协议(Internet组管理协议)。3 ) 运输层主要为两台主机上的应用程序提供端到端的通信。在TCP/IP协议族中,有两个互不相同的传输协议: TCP(传输控制协议)和 阅读全文
摘要:
HTTP请求:请求行 Method Request-URI HTTP-Version CRLF 如:GET /index.html HTTP/1.1HEAD /index.html HTTP/1.1POST /index.html HTTP/1.1消息报头空行消息正文HTTP响应:状态行 HTTP-Version State-Code Reason-Phrase CRLF 如:HTTP/1.1 200 OK消息报头空行消息正文实验:telnet www.163.com 80GET/index.html HTTP/1.1Host:www.163.com回车回车或:HEAD/index.html 阅读全文