- 博客(34)
- 资源 (9)
- 收藏
- 关注
原创 DXUT 框架入门 1
DXUT 框架入门 1CD3DApplication 框架类已经光荣的退役了,取而代之的是DXUT*系列函数。在这篇文章中将要简单介绍DXUT框架的应用。最近的directx 下载地址, 这里面包含了64位操作系统库以及directx10等等,directx10 的程序例子只能运行在windows vista 上面。尽管可以编译,但缺少directx3d10 运行库. 在安装sdk之
2006-10-21 16:40:00
4482
转载 探讨SSE指令
比较一下3DNow和浮点指令的性能差异,可以看出,3DNow指令集在运算速度上要远远超过浮点指令。那么,SSE性能如何呢,它是否有能力同3DNow一拚高低?我想,很难说那一个更好一些,因为它们都有着很高的性能。不过单从指令集上看,SSE还是要略胜一筹的。毕竟是新增了8个128位的寄存器,而且指令的功能也要强大一些。3DNow使用MMX指令的寄存器,可以借助MMX指令的强大功能,不必设计太多的
2006-09-24 01:04:00
6353
转载 基于SSE指令集的程序设计简介
作者:Alex Farber出处:http://www.codeproject.com/cpp/sseintro.aspSSE技术简介Intel公司的单指令多数据流式扩展(SSE,Streaming SIMD Extensions)技术能够有效增强CPU浮点运算的能力。Visual Studio .NET 2003提供了对SSE指令集的编程支持,从而允许用户在C++代码中不用编写汇编代码就
2006-09-24 01:01:00
2224
1
转载 SSE指令介绍及其C、C++应用
SSE是英特尔提出的即MMX之后新一代(当然是几年前了)CPU指令集,最早应用在PIII系列CPU上。现在已经得到了Intel PIII、P4、Celeon、Xeon、AMD Athlon、duron等系列CPU的支持。而更新的SSE2指令集仅得到了P4系列CPU的支持,这也是为什么这篇文章是讲SSE而不是SSE2的原因之一。另一个原因就是SSE和SSE2的指令系统是非常相似的,SSE2比SSE
2006-09-24 00:33:00
5858
转载 boost condition
1.简介condition是一个简单的同步对象,用于使一个线程等待一个特定的条件成立(比如资源可用)。一个condition对象总是和一个mutex对象配合使用。mutex在交给condition对象的wait系列函数时,必须已经通过lock对象加上了锁。当线程陷入等待时,condtion对象将释放mutex上的锁,当wait返回时,mutex上的锁会重新加上,这一unlock/lock动作由co
2006-09-24 00:17:00
7238
原创 鼠标HOOK
对于win32每个进程都有自己独立的4GB空间,这个每个程序相对于其他程序都是独立的,一个程序轻易不能访问其他程序地址,一旦访问了轻则跳出出错提示,重则蓝屏,然而当你离开了当前程序,却想要跟踪一些消息,就困难重重了。幸好windws 给我们提供了钩子(hook)函数。 钩子(hook)一般分为两个等级:全局钩子和局部钩子。全局顾名思义可以挂钩其他程序的消息,而局部则直挂钩使用钩
2006-09-24 00:15:00
4834
转载 boost随机数
一. 概念随机数被用在很多场合, 比如数值计算, 游戏, 加密, 测试.根据场合的不同, 需求的随机数发生器也不尽相同. 可以分为一下三种.non-deterministic random number generator pseudo-random number generator quasi-random number generator [数字发生器{number generator)]一个
2006-09-23 02:30:00
4193
转载 boost pool 内存池
简介: Pool分配是一种分配内存方法,用于快速分配同样大小的内存块, 尤其是反复分配/释放同样大小的内存块的情况。 使用: 1. pool 快速分配小块内存,如果pool无法提供小块内存给用户,返回0。 Example: void func() { boost::pool ^^^^^^^^
2006-09-23 02:27:00
3357
转载 boost lambda简介
1, 简介 有的时候我们实在是很烦写一个function object了. 为了一个简单的目的, 不得不跳到很远的某一个hpp文件里面去在声明一个function object, ft. lambda能帮你去除烦恼. btw: lambda并不仅仅为了方便你"写"程序. 它能在代码优化上发挥一定的作用.2, 使用 套用一下, for_each(x, x+N, std::cout 很
2006-09-23 02:25:00
2960
转载 boost timer类介绍
1, 简介 很多时候我们写程序都要计算一下时间. 其实就是在一个操作两端记录一下时 间, 然后减一下. 如果我们懒到这个动作都想省掉, 那就用boost::timer吧.2, 使用 有三个可以用的类类progress_timer在离开定义自己的scope之后就会自动销毁, 并且显示经过的时间.#include #include #include #include int main(){
2006-09-23 02:23:00
3403
转载 boost库xml序列化
今天利用编版本的时间研究了一下boost的序列化,特别是xml序列化的东东,还是有很多收获,记下来怕以后忘记了,人老了,很多东东都记不得了......(一)研究boost库xml序列化要做准备的工作a.下一个最新的boost库记住用1.32版本的,这个版本提供了XML序列化的支持b.windows下用的VC7.0,这个是一定要了,我一直没舍得换我的VC6,结果编译boost的seria
2006-09-23 01:54:00
5260
原创 避免内存碎片
许多书籍提到过内存碎片,也看到一些方法防治内存碎片。一直以来都以为频繁的分配释放内存会导致系统内存碎片过多(虽然这个想法并没有错到离谱)。后来看过计算机程序设计艺术上面关于伙伴系统的介绍,一般操作系统都采用此种方法来管理内存。频繁分配释放内存确实会导致一些系统负担,但分配的内存释放及时,内存管理系统将能够急时合并相邻空闲内存块,得到更大的空闲内存。这样并不会导致内存碎片的出现。即使相邻空间
2006-09-22 21:50:00
5629
转载 C++ Boost 库文档索引
C++ Boost 库文档索引 1 按字母顺序库列表 2 按主题库列表 2.0 字符串和文本处理( String and text processing) 2.1 容器(Containers) 2.2 迭代器(Iterators)
2006-09-21 23:27:00
3290
1
转载 C++ Boost库简介
boost是一个准标准库,相当于STL的延续和扩充,它的设计理念和STL比较接近,都是利用泛型让复用达到最大化。不过对比STL,boost更加实用。STL集中在算法部分,而boost包含了不少工具类,可以完成比较具体的工作。 boost主要包含一下几个大类:字符串及文本处理、容器、迭代子(Iterator)、算法、函数对象和高阶编程、泛型编程、模板元编程、预处理元编程、并发编程、数
2006-09-21 21:25:00
12680
转载 boost::any的介绍
动机 许多时候我们需要一个generic type:变量是真正可变的,可以容纳许多其他的特定类型,而不是C++通常的严格的静态类型。我们区分三种基本的generic type种类: 1. 可容纳许多可能值类型的类型,比如int和string,并且可在它们之间自由转换,例如:将5作为"5"或者反之。这样的类型在脚本语言和其他的解释型语言中较常见。boost::lexical_ca
2006-09-16 22:11:00
1330
原创 vc 助手
visual assist vc6 的专家系统很差,2003还马马虎虎,用这个插件可以对第三方库分析,获得动态输入提示,自动识别各种关键字,系统函数,成员变量,自动更正大小写错误,自动标示错误,可以goto到鼠标所在函数等等可以到 www.ttdown.com 下载。numega boundcheck是 针对Visual C++6.0应用程序的最为全面的错误检测工具。BoundsChecker 能
2006-09-15 23:11:00
1925
原创 使用远程线程制作不死进程
远程线程指把当前进程部分代码注入到其他进程做为线程执行,虽然钩子程序能挂钩其他程序的消息,但钩子程序退出,注入的dll也就退出了,而远程线程不会 随着本地进程退出而结束。而且可以处理更多的事情,而不局限于消息。由于98不支持所以只能在nt内核上运行,下面是制作远程线程需要使用的api。获取进程句柄方法之一是使用GetWindowThreadProcessId函数,这个函数可以从一个窗口句柄获得创建
2006-09-15 23:05:00
1916
翻译 Boost Graph Library 快速入门
Boost Graph Library 快速入门 图领域的数据结构和算法在某些方面比容器更为复杂,图算法在图中移动有着众多的路线,而STL使用的抽象迭代器接口不能有效的支持这些。作为替换,我们为图提供了一个的抽象的结构,其与容器迭代器的目的类似(尽
2006-05-24 13:53:00
23415
3
原创 安装Boost
对于vs2003.net,如果只安装boost 相对比较简单,可以跳到步骤2,这里要安装boost 的stlport 版本。即同时安装stlport 和 以stlport 为标准库编译 boost .1、先安装stlport进入stlport/src 目录运行nmake –f vc71.mak install这样默认stlport头文件放入 ..../Microsoft Visual Studi
2006-05-23 04:55:00
4825
原创 vc的hash_map怎么啦
以下比较均基于 release 版本,debug 有调试信息不能作为标准。#include "stdafx.h"#include #include #include #include #include #include using namespace std;#pragma warning(disable : 4996)int _tmain(int argc, _TCHAR* argv[]){
2006-05-16 12:35:00
4711
原创 string的Copy-On-Write技术
标准C++类std::string的内存共享和Copy-On-Write技术 虽然vc6用了引用计数,但VC2003的字符串并没使用Copy-On-Write的特征.正如楼主例子里面 str1[1]=q,时系统要重新给st1分配了内存。早分配还是晚分配? 假设str2没有使用,对于release版本那都是只分配一次内存。但不考虑引用计数 str1[1]=q操作,早分配速度反倒好过晚
2006-05-14 02:04:00
1207
转载 c++资源之不完全导引 zz
c++资源之不完全导引 (全文)撰文/ 曾毅 陶文最后更新:2004年6月12日声明:.本文2004年5月首发于《CSDN开发高手》,版权归该杂志与《程序员》杂志社所有。杂志限于篇幅部分内容有所删节,此处版本为相对完整版本。本文为介绍性文章,会随笔者学习C++语言不断更新。前言无 数次听到“我要开始学习C++!”的呐喊,无数次听到“C++太复杂了,我真的学不会”的无奈。Stan Lippm
2006-05-12 20:35:00
1608
原创 C++常见面试题
希望这个贴子能给正在找工作的朋友一点帮助.SIZEOF 题目:如果代码里面有 while(*p) 判断字符串结束的,要用 *p!=/0 代替。1)sizeof相关系列问题, const相关系列问题a. 对于 struct s{char a;int b} sizeof(s) = 8 因为内存对齐 b. 对于 int a[200] sizeof(a) = 200* sizeof(int) =
2006-05-11 23:40:00
7453
1
原创 stl应用小问题
1. 编译器的解析 list data(istream_iterator(cin),istream_iterator());这不是声明一个list变量 data,而是被认为是一格函数声明. 可以使用如下方法(effective stl 有讲)istream_iterator dataBeg(cin);list data(dataBeg,istream_iterator());当然还有 stack
2006-05-09 00:37:00
1367
原创 Fibonacci 单词
Fibonacci单词定义与Fibonacci数的定义类似: FIB(1)=b,FIB(2)=a,FIB(k+2)=FIB(k+1)*FIB(k)(k>=1),*的意思是两个字符串连接,所以FIB3=ab;FIB4=aba;FIB5=abaab; 现在给出一个长度最多为30的模式串,仅含字母a或b. 计算第n个Fib单词中含有多少个这样的模式串.模式串在Fib单词中的位置可以重叠. Input该题
2006-05-01 01:39:00
1058
转载 快速平方根(平方根倒数)算法
日前在书上看到一段使用多项式逼近计算平方根的代码,至今都没搞明白作者是怎样推算出那个公式的。但在尝试解决问题的过程中,学到了不少东西,于是便有了这篇心得,写出来和大家共享。其中有错漏的地方,还请大家多多指教。 的确,正如许多人所说的那样,现在有有FPU,有3DNow,有SIMD,讨论软件算法好像不合时宜。关于sqrt的话题其实早在2003年便已在 GameDev.net上得到了广泛的讨论(
2006-02-24 10:01:00
6139
1
原创 猴子分桃
/*题目:海滩上有一堆桃子,五只猴子来分。第一只猴子把这堆桃子凭据分为五份,多了一个,这只猴子把多的一个扔入海中,拿走了一份。第二只猴子把剩下的桃子又平均分成五份,又多了一个,它同样把多的一个扔入海中,拿走了一份,第三、第四、第五只猴子都是这样做的,问海滩上原来最少有多少个桃子?*/void taozi(){ int i,m,j,k,count; for(i=4;i {
2006-02-20 23:10:00
1397
原创 一些不太常用C++语法
慢慢更新:1. placement new 方法如:pi = new (ptr) int; //placement new 括号里的参数是一个指针,它指向一个内存缓冲器,new操作将在这个缓冲器上分配一个对象。Placement new的返回值是这个被构造对象的地址(比如扣号中的传递参数)。placement new主要适用于:在对时间要求非常高的应用程序中,因为这些程序分配的时间是确定的;
2005-08-03 22:37:00
2767
1
原创 轻松求素数
没有作什么溢处判断.比如n 超过int 最大值,数组长度小于 len等.作为素数条件1.素数一定是奇数 :)2.素数只能整除1和他自己3.奇数如果不能整除比他小的素数,则为素数。这个范围可以更小,就是除到比这个数开方小的素数即可如果都不能整除则此数为素数。当然不能在程序里面做开方运算,速度太慢。换作 n 相对乘法比开方除法快//保证array 开辟区间比len大void prime(int* ar
2005-07-23 01:47:00
1192
原创 windows 远程线程介绍
远程线程指把当前进程部分代码注入到其他进程做为线程执行,虽然钩子程序能挂钩其他程序的消息,但钩子程序退出,注入的dll也就退出了,而远程线程不会随着本地进程退出而结束。而且可以处理更多的事情,而不局限于消息。由于98不支持所以只能在nt内核上运行,下面是制作远程线程需要使用的api。获取进程句柄方法之一是使用GetWindowThreadProcessId函数,这个函数可以从一个窗口句柄获得创
2005-07-17 20:50:00
1628
原创 算一个字(DWORD)里有多少bit被置1
看到别人的blog里面有道这样的面试题,答案如下(求出n中1的个数):int count=0; for (register u_long m = n;m != 0;m &= m - 1) count++;只用一行,而且循环次数(=m二进制中1的个数)很少.同样一语句实现x是否为2的若干次幂的判断int i = 512;cout
2005-07-03 23:56:00
1680
原创 使用memset 的小问题
一直没有注意memset是串操作,平时都是用memset(array,0,cout*sizeof())很少用赋其他的值. 结果调用memset(array,1,100*sizeof(int)) 时发现int 数组里面乱七八糟.:P. 呵呵对于字符串数组赋值是正常,拿来对整形数组赋值就不对了。希望大家不犯这样的错误对于上面调用反汇编代码如下:mov eax,10101
2005-07-03 23:21:00
1957
2
原创 检测CPU支持的指令SSE
最近学习SSE指令集,SSE全称是stream SIMD Extentions(流SIMD扩展) ,SSE指令采用128位存储单元,可以放置4个浮点数,也就是说一条命令可以执行4次浮点数运算。SSE是为了更快地处理浮点数而开发的扩展指令集,因此该指令通常被用于几何运算方面,例如3D绘图应用软件、电脑游戏。对图形图像、多媒体感兴趣的,可以一起来研究研究。 下面先贴一段简单的检测程序,以后在找
2005-07-03 14:25:00
3957
原创 Still in Love with C++ 中文版(1)
Still in Love with C++ 中文版(1)[ 发表日期:2002-4-18 15:44:17 ] Still in Love with C++ 中文版Modern
2002-04-24 09:25:00
1193
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人