上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 17 下一页

2012年12月30日

c++ 异常类别(Exception Classes)的成员

摘要: 为了在catch子句中处理异常,需要知道异常提供哪些接口。所有标准异常只提供一个可用的接口函数:what(),用以获取异常“型别之外的附加信息”。namespace std { class exception { public: virtual const char* what() const throw(); … };}what()返回的字符串,很大程度决定了帮助的级别和信息的详细度。该字符串是以null结尾的“multibyte”字符串,也可以轻松转换为wstring并显示出来。what()返回的C-string在其所属的异常对象销毁后,就不再有效(标准没有强制)。除了w... 阅读全文

posted @ 2012-12-30 09:00 zhuyf87 阅读(1803) 评论(0) 推荐(0) 编辑

2012年12月29日

c++标准异常类别

摘要: 语言本身或标准程序库所抛出的所有异常,都派生自基类exception。所有这些标准异常可分为三组:(1)语言本身支持的异常;(2)c++标准程序库发出的异常;(3)程序作用域(scope of a program)之外发生的异常。1. 语言本身支持的异常此类异常用以支撑某些语言特性。(1)new操作失败,会抛出bad_alloc异常(new的nothrow版本另当别论)。(2)执行期间,当一个作用于reference身上的“动态型别转换操作”失败时,dynamic_cast会抛出bad_cast异常。(3)执行期型别辨识(RTTI)过程中,如果交给typeid的参数为零或空指针,typeid操 阅读全文

posted @ 2012-12-29 22:38 zhuyf87 阅读(5112) 评论(0) 推荐(0) 编辑

TCP协议数据格式

摘要: TCP协议间交换的数据单元称为“TCP段”,包括两部分:首部和数据。标准首部长20字节,带有选项的首部会更长。1. 源端口和目的端口各占2字节,端口号加上IP地址,共同构成socket。互相通信的进程使用一对socket,包括协议、源IP、源端口、目的IP、目的端口,这五个元素唯一确定一个TCP连接。2. 序号占4字节,是TCP段所发送的数据部分第一个字节的序号。在TCP传送的数据流中,每一个字节都有一个序号。建立连接时,发送方将初始序号(Initial Sequence Number, ISN)填写到第一个发送的TCP段序号中。3. 确认号占4字节,是期望收到对方下次发送的数据的第一个字节的 阅读全文

posted @ 2012-12-29 15:20 zhuyf87 阅读(16645) 评论(0) 推荐(3) 编辑

2012年12月28日

直接插入排序

摘要: 直接插入排序(Straight Insertion Sort)的基本操作是将一个记录插入到已经排好序的有序序列中,从而得到一个新的、记录数增1的有序序列。工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序数据逐步后移,为最新元素提供插入空间。具体算法描述如下:1. 从第一个元素开始,该元素可以认为已经被排序2. 取出下一个元素,在已排序序列中从后向前扫描3. 如果该元素(已排序)大于新元素,将该元素后移4. 重复步骤3,直到找 阅读全文

posted @ 2012-12-28 15:14 zhuyf87 阅读(271) 评论(0) 推荐(0) 编辑

c++ 捕获构造函数成员初始化列表产生的异常

摘要: 为了处理构造函数成员初始化列表产生的异常,必须将构造函数编写为函数测试块(function try block)。template <class T> Handle<T>::Handle(T *p)try : ptr(p), use(new size_t(1)){ // empty function body} catch(const std::bad_alloc &e) { handle_out_of_memory(e);}关键字try出现在成员初始化列表之前,测试块的复合语句包围了构造函数的函数体。catch子句既可以处理从成员初始化列表中抛出的异常,也可以 阅读全文

posted @ 2012-12-28 07:55 zhuyf87 阅读(1815) 评论(0) 推荐(1) 编辑

c++ 捕获所有异常

摘要: 捕获所有异常(catch-all)的catch子句的形式为“catch(…)”。// matches any exception that might be throwncatch(…) { // place our code here}“catch(…)”经常与重新抛出异常的“throw;”语句结合使用。catch完成可做的所有局部工作之后,重新抛出异常。try { // actions that cause an exception to be thrown}catch(…) { // work to partially handle the exception throw;}需要... 阅读全文

posted @ 2012-12-28 07:36 zhuyf87 阅读(11937) 评论(0) 推荐(1) 编辑

2012年12月27日

简单选择排序

摘要: 简单选择排序(Simple Selection Sort)是通过n – i次关键字之间的比较,从n – i + 1个记录中选出关键字最小(大)的记录,并和第i(1≤i≤n)个记录交换。这种排序算法简单直观,首先从未排序序列中找到最小(大)元素,存放到排序序列的起始位置。然后再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对n个元素的表进行排序总共进行至多n-1次交换。算法实现及测试:#i 阅读全文

posted @ 2012-12-27 17:41 zhuyf87 阅读(2333) 评论(0) 推荐(0) 编辑

TCP(传输控制协议)简介

摘要: TCP是一个面向连接的、端到端的可靠的传输层协议。位于TCP/IP网络分层架构中的第三层,底层是IP协议。IP把TCP段封装在数据报中发送到网络上。TCP的正式标准是RFC793,后序又有许多其他RFC补充了TCP其他方面的附加信息,其中一些是为适应现代网络所做的增强。793传输控制协议813窗口和确认策略879最大段长度和相关专题1122互联网主机要求——通信层1323TCP高性能扩展2018TCP选择性确认2581TCP拥塞控制2757细长网络2988计算TCP重传定时器TCP协议在传输数据之前先在两台设备之间建立一条虚拟连接,之后就可以双向传输数据。它使用端口为应用程序提供传输层寻址,这 阅读全文

posted @ 2012-12-27 15:46 zhuyf87 阅读(976) 评论(0) 推荐(0) 编辑

c++重新抛出异常

摘要: 有可能单个catch不能完全处理一个异常,此时在进行了一些处理工作之后,需要将异常重新抛出,由函数调用链中更上层的函数来处理。重新抛出由“throw;”语句实现,throw后不跟表达式或类型。“throw;”将重新抛出异常对象,它只能出现在catch或catch调用的函数中,如果出现在其它地方,会导致调用terminate函数。被重新抛出的异常是原来的异常对象,不是catch形参。该异常类型取决于异常对象的动态类型,而不是catch形参的静态类型。比如来自基类类型形参catch的重新抛出,可能实际抛出的是一个派生类对象。只有当异常说明符是引用时,在catch中对形参的改变,才会传播到重新抛出的 阅读全文

posted @ 2012-12-27 10:46 zhuyf87 阅读(2797) 评论(0) 推荐(0) 编辑

2012年12月26日

冒泡排序

摘要: 冒泡排序(Bubble Sort)是一种交换排序。基本思想是:每次(外循环)遍历序列都把最大(小)的元素放在最前面(通过内循环的“比较-交换”),然后再对剩下的序列重复这个过程,每次遍历之后待排序序列就少一个元素,直到排序完毕。因此,时间复杂度在最坏的情况下是O(N ^ 2)。算法实现及测试:#include <iostream>using namespace std;// 冒泡排序void BubbleSort(int data[], int count){ int auxiliary = 0; bool swap_flag = true; for (int i = 0; ... 阅读全文

posted @ 2012-12-26 18:11 zhuyf87 阅读(494) 评论(1) 推荐(1) 编辑

上一页 1 ··· 6 7 8 9 10 11 12 13 14 ··· 17 下一页

导航