
C++
文章平均质量分 67
nick_wong
这个作者很懒,什么都没留下…
展开
-
文字编码
http://blog.minidx.com/2008/12/06/1689.html通过前面的 关于计算机中Endian(big-edian和little-endian)存储机制的由来、特点和区别和一篇关于Unicode编码的UCS、UTF、BMP、BOM等概念的不错的文章这两篇文章,读过之后应该对字符编码有一个比较深刻地了解,不过这个世界是有很多个说着不同语言的国家组成转载 2012-06-25 11:49:09 · 675 阅读 · 0 评论 -
SSE指令集加速运算
先上代码:/*g++ -msse2 main.cpp -lrt*/#include #include //SSE指令集需包含词头文件#include using namespace std;#define N 120int main() { struct timespec tpstart,tpend; clock_gettime(CLOCK_MONOTONIC原创 2012-07-24 13:27:56 · 2285 阅读 · 0 评论 -
模板友元化
在C++中,重载二元运算符时往往需要使用友元,而在类模版中,重载函数也需要使用函数模版,这件事就变得很麻烦。LZ在linux平台下使用GCC编译器,出现各种问题,就是不能成功将函数模版实例化。 下面的文章提供的方法没有成功。并且经过试验,发现在函数模版实例化时需要在前面加上template>,即:函数模版申明:templatetypenameT> void func( T转载 2012-08-09 11:02:43 · 1018 阅读 · 0 评论 -
C++模板类(函数)编译 多文件编译
在C++中,模版和普通的函数或类有很多不一样的性质。前两天写了一个模版类,头文件和实现文件分开存放的。这就出问题了,老是说找不到实现。查了一些资料才知道,原因是这样的,编译器在实例化一个类时,需要知道该类的所有确定的信息,如果是普通的类这是完全由头文件(.h)中类的声明决定的。但是对于模版类,此信息不确定,于是编译器只是存放一个符号,而把这一个步骤放到最后链接时来完成。而编译器在编译模版类的实现文转载 2012-08-09 16:46:39 · 3008 阅读 · 1 评论 -
C++中的try{} catch(…)
try{} catch(…){}以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常, 今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的。例如下面的代码:try { BYTE* pch ;pch = (BYTE* )00001234 ; //给予一个非法地址 *pch =6 ; //对非法地址赋值,会造成Access Vio转载 2012-08-09 18:19:15 · 600 阅读 · 0 评论 -
SSE/SSE2
毫无疑问,数学库是图形程序的基石,是图形程序运行效率的关键之一。一个优秀的数学库可以让图形程序运行得更流畅,甚至要快上几十倍上百倍。有时候替换一条除法运算会带来成倍的效率增长,比如用乘以 1/op 替换 vector 里的 operator /。当然,更高级的优化是使用 SIMD 优化海量运算,这就是本文的中心——SSE/SSE2 优化。在描述 SSE/SSE2 优化前,我先介绍一般的 vec转载 2012-08-10 09:55:57 · 2555 阅读 · 0 评论 -
C++ 断言assert() 函数用法
assert宏的原型定义在assert.h中,其作用是如果它的条件返回错误,则终止程序执行. 原型定义: 1#include "assert.h" 2void assert( int expression ); assert的作用是现计算表达式 expression ,转载 2012-08-10 09:35:33 · 727 阅读 · 0 评论 -
C++的临时对象
我们知道在C++的创建对象是一个费时,费空间的一个操作。有些固然是必不可少,但还有一些对象却在我们不知道的情况下被创建了。通常以下三种情况会产生临时对象: 1,以值的方式给函数传参; 2,类型转换; 3,函数需要返回一个对象时; 现在我们依次看这三种情况: 一,以值的方式给函数传参。 我们知道给函数传参有两种方式。1,按值传递;2,按引用传递。按值传递转载 2012-08-10 09:43:59 · 471 阅读 · 0 评论 -
C++ string 用法详解
任何人对本文进行引用都要标明作者是Nicolai M.Josuttishttp://www.byvoid.com/blog/cpp-string////////////////////////////////////////////////////////////////////////////////////C++ 语言是个十分优秀的语言,但优秀并不表示完美。还是有许多人不愿意使转载 2012-08-10 17:28:22 · 3168 阅读 · 0 评论 -
Pentium III处理器的单指令多数据流扩展指令入门
转自:DDJ Microprocessor Center (http://www.vckbase.com/index.php/wv/176.html)在这篇文章里,我们将向你展示Pentium III处理器和她的这些新特性,并且将着重讲述Pentium III处理器的新指令集.1.Pentium III处理器概要 1999年2月,Intel发布了她的最新款处理器Pe转载 2012-08-07 13:07:23 · 2219 阅读 · 0 评论 -
C++内存对齐机制
1. 什么是内存对齐内存对齐的问题主要存在于理解struct等复合结构在内存中的存储结构。在C语言中,结构是一种复合数据类型,其构成元素既可以是基本数据类型(如int、long、float等)的变量,也可以是一些复合数据类型(如数组、结构、联合等)的数据单元。在结构中,编译器为结构的每个成员按其自然对界(alignment)条件分配空间。各个成员按照它们被声明的转载 2012-07-24 10:06:25 · 662 阅读 · 0 评论 -
C语言宏条件编译详解
预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。在C 语言中,并没有任何内在的机制来完成如下一些功能:在编译时包含其他源文件、定义宏、根据条件决定编译时是否包含某些代码。要完成这些工作,就需要使用预处理程序。尽管在目前绝大多数编译器都包含了预处理程序,但通常认为它们是独立于编译器的。预处理过程读入源代码,检查包含预处理指令的语转载 2012-06-25 11:59:32 · 427 阅读 · 0 评论 -
自定义信号处理函数实现静默捕获动作
#include #include #include void sig_alrm(int signo) //自定义信号处理函数{ printf("Two seconds passed\n");}int main(void){ struct sigaction newact, oldact; //信号处理的新旧结构体 newact.sa_handler = sig_alrm原创 2012-06-26 17:45:41 · 566 阅读 · 0 评论 -
[转+修改]一般函数指针和类的成员函数指针
转载请注明原文网址(楼主稍作修改以适应C++标准,编译器g++): http://www.cnblogs.com/xianyunhe/archive/2011/11/26/2264709.html函数指针是通过指向函数的指针间接调用函数。函数指针可以实现对参数类型、参数顺序、返回值都相同的函数进行封装,是多态的一种实现方式。由于类的非静态成员函数中有一个隐形的this指针,因此,类的成员转载 2012-07-09 11:57:09 · 427 阅读 · 0 评论 -
cout 格式化输出详解
本文转自:http://hi.baidu.com/hankcs/blog/item/3ea53a3c664d550cbba16765.htmlRe-edited By QianLi.//在使用setf等库函数时使用//在使用流操纵算子时使用//using namespace std;//以下所有的setf()都有对应的unsetf()用于取消设置//所有的setiosf转载 2012-07-09 12:04:44 · 451 阅读 · 0 评论 -
gcc对OpenMp的支持
OpenMP是专门针对共享地址空间的平行计算机提供的并行计算库,在Intel C++和Visual C++ 8.0里通过#pragma支持。用OpenMP,可以不必去写诸如CreateThread之类的线程管理代码,多线程程序写起来比较简洁。而且 OpenMP提供了很丰富的指令,对于同步共享变量、合理分配负载等任务,都提供了有效的支持,很值得一学。不过因为这个东西用起来很轻松,稍一疏忽就能 酿成愚转载 2012-07-09 12:12:26 · 7559 阅读 · 0 评论 -
安装telnet服务
用C++写了一个服务器端的程序,端口号为30000,在本机的客户端能够成功访问,但是到其他机器上不能连接上。显示不能访问23端口,原来是telnet服务未开启。安装telnet服务 1)apt-get install openbsd-inetd 2)sudo apt-get install xinetd telnetd 3)/etc/inetd.c转载 2012-07-10 12:10:46 · 437 阅读 · 0 评论 -
递归与循环的开销比较,高精度时间函数
#include using namespace std;#include long p(long n);int main(){ struct timeval start, end; gettimeofday(&start, NULL); cout<<p(10)<<endl; gettimeofday(&end, NULL); long seco原创 2012-07-11 17:46:36 · 1208 阅读 · 0 评论 -
C++文件流
C++文件流:fstream // 文件流ifstream // 输入文件流ofstream // 输出文件流//创建一个文本文件并写入信息//同向屏幕上输出信息一样将信息输出至文件#include#includevoid main(){ ofstream f1("d:\\me.txt"); //打开文件用于写,若文件不存在就转载 2012-07-17 11:32:21 · 353 阅读 · 0 评论 -
Compiling Cpp
在linux下采用GCC了解编译的全过程 1 #预处理 2 g++ -E add.cpp -o add.i 3 g++ -E main.cpp -o main.i 4 5 #编译,生成汇编语言文件 6 g++ -S add.i -o add.s 7 g++ -S main.i -o main.s 8 9 #汇编 10 g++ -c转载 2012-08-21 22:52:38 · 413 阅读 · 0 评论