C++:随机数生成器(random-number generator) 详解
随机数, C语言的函数是rand(), C++则是随机数生成器(random-number generator) = 分布对象(distribution object) + 引擎(engine);
使函数每次生成不同的随机数, 需要使用静态(static)局部变量, 这样分布对象和引擎就能保持(hold)状态(state), 每次都生成一个新的;
生成随机的整数, 使用分布对象uniform_int_distribution, ...
C++的表达式与语句
表达式
1,应该把函数调用当作是一种运算符,这种运算符对参与运算的对象没有数量限制。
2,关于“左值(lvalue)”和“右值(rvalue)”可以做一个简单的归纳:当一个对象被用作右值的时候,用的是对象的值(内容);当对象被用作左值的时候,用的是对象的身份(在内存中的位置)。
更具体的左值与右值的举例:C++ priemr 5ed ...
C++的数据与类型
一、前言
最近在看C++Primer第5版,先前已经看过第4版,但是发现第5版在整个知识布局与个别知识的讲解上跟第4版差别还是挺大的,尤其是新增了C++11的内容,正如孟岩老师在第5版前言中所讲:“现在能够以新的C++11风格开发实践的人是凤毛麟角,如果能够纯熟的运用C++11的新特征、新机制,那么就能够形成一种简洁优雅的C++编 ...
C++中数据对齐问题:struct、union、enum。再谈sizeof()
首先是struct,在C++中,结构体其实和class有很大的相似了。但是有一点不同的是,struct默认是public,而class中是private.
当然,struct继承等用法也是可以的。
共用体的声明方式是:
枚举的声明方式与共用体比较相似
其中a初始化为0,后面默认增1,若已经初始化,则后面再增1,比如d=6在这里。
struct长度计算
大家猜一下 ...
Windows编程:遍历程序使用的动态链接库(dll) 代码(C++)
遍历程序使用的动态链接库(dll), 首先需要遍历所有进程, 匹配进程名称与进程ID, 然后根据进程名称, 输出所有使用的库(dll).
示例中Image.exe是预先启动的程序. 代码包含遍历进程的代码, 和输出动态链接库(dll)的代码.
代码:
/*
* main.cpp
*
* Created on: 2014.06.08
* Author: Spike
*/
/*vs 2012 ...
C++:随机生成器 伯努利分布(bernoulli distribution) 详解
伯努利分布(bernoulli distribution), 是判断某件事情发生或者未发生的概率;
给定参数p, 可以修改概率的值, 发生概率(true)是p,未发生概率(false)是1-p;
随机库, 提供分布对象bernoulli_distribution, 输出bool值, 发生为true, 未发生为false;
伯努利分布, 概率为0.5时, 可以等概率输出一个二元事件, 如先后顺序;
注意: 引 ...
C++的explicit关键字的使用场景
假若我们定义了Str类如下结构
class Str
{
public:
Str(int n)
Str(const char* p)
.....
}
可以使用如下方式来构建一个对象
Str c(12);
Str d=Str(20);
Str *z=new Str(21);
Str a=10;//此处构建10个大小的空间
Str b="abcd";//此处构建特定字符 ...
借助 C++ 进行 Windows 开发:使用 DirectWrite 和最新 C++ 管理字体
DirectWrite 是一种相当强大的文本布局 API。 它支持从 XAML 和 Office 2013 的 Windows 运行 时 (WinRT) 实现到 Internet Explorer 11 和更高版本的几乎所有领先 Windows 应用程序和技术。 它 本身并不是呈现引擎,但与 Direct2D 有很近的关系,是 Direct2D 在 DirectX 系列中的同级产品。 当然,Direct2D 是首要的硬件加 ...
可配置语法分析器开发纪事(五) 构造一个真正能用的状态机(中)
上一篇博客写到了如何给一个非终结符的文法规则构造出一个压缩过的下推状态机,那么今天说的就是如何把所有的文法都连接起来。其实主要的idea在(三)和他的勘误(三点五)里面已经说得差不多了。但是今天我们要处理的是带信息的transition,所以还有一些地方要注意。
所以在这里我们先把几条文法的最后的状态机都列出来( ...
可配置语法分析器开发纪事(三点五) 生成下推自动机的具体步骤
刚刚发了上一篇文章之后就发现状态机画错了。虽然LiveWriter有打开博客并修改文章的功能,不过为了让我留下一个教训,我还是决定发一篇勘误。这个教训就是,作分析的时候不要随便“跳步”,该一步一步来就一步一步来。其实人呢,就是很容易忘掉以前的教训的了。第一个告诉我不能这么干的人其实是小学三年级的数学老师。当时 ...
Linux errno 错误对照表
errno 在 中定义,错误 Exx 的宏定义在 /usr/include/asm-generic 文件夹下面的 errno-base.h 和 errno.h,分别定义了 1-34 、35-132 的错误定义。
strerror() 函数依据 errno 值返回错误描述字符串,下面程序打印对照表:
01.#include
02.#include
03.#include
04.
05.int main()
06.{
07. int i;
08. for(i = 0 ...
借助 C++ 进行 Windows 开发:Windows 运行时的呈现
我的上一个专栏中讨论了 Windows 运行时 (WinRT) 应用程序模型 (msdn.microsoft.com/magazine/dn342867)。 我演示了如何通过标准 C++ 和经典 COM 来编写 Windows 应用商店或 Windows Phone 应用程序,其中仅使用了一些 WinRT API 函数。 毫无疑问,您 不必使用 C++/CX 或 C# 这样的语言投射。 能够绕过这些抽象概念是一种强 ...
C++/CX的性能陷阱
使用C++/CX编写应用程序和编写正常的C++应用程序不一样。纯C++代码和Windows运行时(WinRT)之间的互操作性出奇的昂贵。基于Sridhar Madhugiri的视频 C++/CX 最佳实战中的内容,我们在本文中列举了一些在Windows 8开发中避免性能问题的方式。
边界
在应用程序的边界上会产生多种性能障碍。
数据转换就是其中的一个例子。考 ...
muduo 与 boost asio 吞吐量对比
muduo (http://code.google.com/p/muduo) 是一个基于 Reactor 模式的 C++ 网络库,我在编写它 的时候并没有以高并发高吞吐为主要目标,但出乎我的意料,ping pong 测试表明,muduo 吞吐量比 boost.asio 高 15% 以上。
测试对象
boost 1.40 中的 asio 1.4.3
asio 1.4.5 (http://think-async.com/Asio/Download)
muduo 0.1.1 ...
在 Windows下静态编译Qt SDK
1.使用条件:
(1)系统:Widows XP 萝卜版
(2)QT:QT4.6.2 windows版
2.使用步骤:
(1)静态编译QT
A:设置qmake.conf
用记事本打开D:\Qt\2010.02.1\qt\mkspecs\win32-g++下的qmake.conf
在“QMAKE_LEXFLAGS =”后面增加"-static",保存退出。
B:运行,“开始---程序程序---Qt SDK by Nokia v2010.02.1 (open source)- ...
QT在Windows下如何制作安装文件和发布程序
QT程序设计完毕时,我们就要发布自己的程序,发布程序有两种方法:一是静态编译,二是制作程序安装包。
静态编译好麻烦,我从来没有成功过,所以我用了动态编译方法,设计完成时,用release方式编译程序,把生成的EXE文件和其依赖的库放在一个文件夹中,用setup2go生成安装文件。
好,我们启动程序,选择文件>>>>>>>新建工 ...
一种自动反射消息类型的 Google Protobuf 网络传输方案
这篇文章要解决的问题是:在接收到 protobuf 数据之后,如何自动创建具体的 Protobuf Message 对象 ,再做的反序列化。“自动”的意思是:当程序中新增一个 protobuf Message 类型时,这部分代码不 需要 修改,不需要自己去注册消息类型。其实,Google Protobuf 本身具有很强的反射(reflection)功能, 可以 根据 type name ...
Muduo 网络编程示例(七)“串并转换”连接服务器及其自动化测试
本文介绍如何使用 test harness 来测试一个具有内部逻辑的网络服务程序。
本文的代码见 http://code.google.com/p/muduo/source/browse/trunk/examples/multiplexer
下载地址: http://muduo.googlecode.com/files/muduo-0.2.0-alpha.tar.gz SHA1 checksum: 75a09a82f96b583004876e95105c679e64c95715
云风在他的博客中提到 ...
通过击鼓传花程序来对比 muduo 与 libevent2 的事件处理效
前面我们比较了 muduo 和 libevent2 的吞吐量,得到的结论是 muduo 比 libevent2 快 18%。有 人会说,libevent2 并不是为高吞吐的应用场景而设计的,这样的比较不公平,胜之不武。为了公平起 见,这回我们用 libevent2 自带的性能测试程序(击鼓传花)来对比 muduo 和 libevent2 在高并发 情况下的 IO 事件处理效率。
测试 ...
可配置语法分析器开发纪事(三) 生成下推自动机
上一篇博客讲到了构造符号表的事情。构造完符号表之后,就要进入语义分析的后一个阶段了:构造状态机。跟我以前写的如何实现正则表达式引擎的两篇文章讲的一样,自动机先从Epsilon Nondeterministic Automaton开始,然后一步一步构造成Deterministic Automaton。但是语法分析和正则表达式有很大不同,那么这个自动机是什么 ...