上一页 1 ··· 8 9 10 11 12
摘要: #include "stdafx.h"#include <iostream>#include <iomanip>#include <stack>#include <queue>#include <Windows.h>using namespace std;typedef struct _Node{ int data; struct _Node *left; struct _Node *right; _Node() { data = 0; left = NULL; right = NULL; }}Node, *_PN 阅读全文
posted @ 2012-08-07 20:20 venow 阅读(350) 评论(0) 推荐(0) 编辑
摘要: #include "stdafx.h"#include <iostream>#include <stack>#include <queue>#include <Windows.h>using namespace std;typedef struct _Node{ int data; struct _Node *left; struct _Node *right; bool isVisit; //用于后序非递归遍历,表示节点是否可以访问 _Node() { data = 0; left = NULL; r... 阅读全文
posted @ 2012-08-04 22:14 venow 阅读(891) 评论(0) 推荐(1) 编辑
摘要: 在 Winsock 中,重叠 I/O(Overlapped I/O)模型能达到更佳的系统性能,高于select模型、异步选择和事件选择三种。重叠模型的基本设计原理便是让应用程序使用一个重叠的数据结构(WSAOVERLAPPED),一次投递一个或多个 Winsock I/O 请求。针对这些提交的请求,在它们完成之后,我们的应用程序会收到通知,于是我们就可以对数据进行处理了。 要想在一个套接字上使用重叠 I/O 模型,首先必须使用 WSA_FLAG_OVERLAPPED 这个标志,创建一个套接字。例如:SOCKET s = WSASocket(AF_INET, SOCK_STREAM, 0, .. 阅读全文
posted @ 2012-06-16 21:10 venow 阅读(5249) 评论(0) 推荐(0) 编辑
摘要: 事件选择(WSAEventSelect)模型是另一个有用的异步 I/O 模型。和 WSAAsyncSelect 模型类似的是,它也允许应用程序在一个或多个套接字上,接收以事件为基础的网络事件通知,最主要的差别在于网络事件会投递至一个事件对象句柄,而非投递到一个窗口例程。 事件通知模型要求我们的应用程序针对使用的每一个套接字,首先创建一个事件对象。创建方法是调用 WSACreateEvent 函数,它的定义如下: WSAEVENT WSACreateEvent(void); WSACreateEvent 函数的返回值很简单,就是一个创建好的事件对象句柄,接下来必须将其与某个套接字关联在一... 阅读全文
posted @ 2012-06-12 19:59 venow 阅读(7777) 评论(0) 推荐(1) 编辑
摘要: 选择(select)模型是Winsock中最常见的 I/O模型。核心便是利用 select 函数,实现对 I/O的管理!利用 select 函数来判断某Socket上是否有数据可读,或者能否向一个套接字写入数据,防止程序在Socket处于阻塞模式中时,在一次 I/O 调用(如send或recv、accept等)过程中,被迫进入“锁定”状态;同时防止在套接字处于非阻塞模式中时,产生WSAEWOULDBLOCK错误。select 的函数原型如下: int select( __in int nfds, //会被忽略,只是为了保持与Berkeley套接字兼容... 阅读全文
posted @ 2012-06-10 22:31 venow 阅读(1776) 评论(0) 推荐(1) 编辑
摘要: 异步选择(WSAAsyncSelect)模型是一个有用的异步 I/O 模型。利用这个模型,应用程序可在一个套接字上,接收以 Windows 消息为基础的网络事件通知。具体的做法是在建好一个套接字后,调用WSAAsyncSelect函数。该模型的核心即是WSAAsyncSelect函数。 WSAAsyncSelect函数定义如下: int WSAAsyncSelect( __in SOCKET s, //指定的是我们感兴趣的那个套接字。 __in HWND hWnd, //指定一个窗口句柄,它对应于网络事件发生之后,想要收到通知消息的那个窗口。 __in... 阅读全文
posted @ 2012-06-10 22:31 venow 阅读(3494) 评论(0) 推荐(0) 编辑
摘要: 虚拟继承即派生类继承多次基类,但在派生类中只存在一份基类的拷贝。编译器实现虚拟继承的方式并不相同,下面我结合VS2010来探讨C++虚拟继承。声明一个虚基类CommonBase,两个从虚基类虚拟派生Base1和Base2,然后D,公有多继承自Base1和Base2,具体类定义如下:class CommonBase{public: virtual void commonBaseFunc() = 0;private: int commonBase_data;};class Base1 : public virtual CommonBase{public: virtual void... 阅读全文
posted @ 2012-04-14 11:19 venow 阅读(3190) 评论(7) 推荐(1) 编辑
摘要: 冒泡排序可以说是众多排序算法之中较简单的一种,思想与选择排序类似,选择排序每一次遍历取出最小的数放在首位(暂时这样认为),而冒泡排序则每一次遍历把最大的数放在数组的最后一个位置,举个例子:12,56,34,789,8,28第一次遍历:12,34,56,8,28,789第二次遍历:12,34,8,28,56,789第三次遍历:12,8,28,34,56,789第四次遍历:8,12,28,34,56,789第五次遍历:8,12,28,34,56,789通常用双重循环,外层循环的次数为N-1次(N为排序的个数),数组代码实现如下: 1 void Bubble_Sort(int array[], in 阅读全文
posted @ 2012-02-08 19:53 venow 阅读(397) 评论(0) 推荐(0) 编辑
上一页 1 ··· 8 9 10 11 12