罗朝辉(飘飘白云)

关注嵌入式操作系统,移动平台,图形开发。-->加微博 ^_^

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  85 随笔 :: 0 文章 :: 169 评论 :: 0 Trackbacks

C/C++

C/C++ 技术
     摘要: 众所周知,在使用迭代器遍历 STL 容器时,需要特别留意是否在循环中修改了迭代器而导致迭代器失效的情形。下面我来总结一下在对各种容器进行正向和反向遍历过程中删除元素时,正确更新迭代器的用法。本文完整源码:点此查看
首先,要明白使用正向迭代器(iterator)进行反向遍历是错误的用法,要不干嘛要有反向迭代器呢(reverse_iterator)。其次,根据容器的特性,遍历删除操作的用法可以分为两组,第一组是 list 和 vector,第二组是 map 和 set。  阅读全文
posted @ 2014-07-10 09:42 罗朝辉 阅读(4556) | 评论 (1)  编辑

     摘要: gcc 4.7.3 不支持成员函数模板特化。为了达到近似成员函数模板特化的效果,可以利用成员函数主模板以及重载函数来实现:  阅读全文
posted @ 2013-07-12 22:04 罗朝辉 阅读(6298) | 评论 (3)  编辑

     摘要: 在前一篇《[深入理解C++(一)]类型转换(Type Casting)》中,我详细讲述了 C++ 中转型动作,以及使用规则。有网友说应该提及下《深度探索 C++ 对象模型》一书中的内容,其实他的意思是,要是对 C++ 对象的内存布局不甚了解,就想要彻悟C++中的类型转型,对象切割,虚函数调用等,犹如脱离了坚实的根基,想去建空中阁楼。理解 C++ 对象的内存布局对学会 C++来说至关重要,但我不打算写 C++ 对象的内存布局相关的文章,因为要站在前人的肩膀上,大牛陈皓 已经就这个主题写了三篇图文并茂的文章:
(一),C++ 虚函数表解析
(二),C++ 对象的内存布局(上)
(三),C++ 对象的内存布局(下)

在继续阅读本文之前,建议先阅读这三篇文章,以更好地理解本系列文章。在接下来的内容中,我将从重载,重写,屏蔽等概念入手,引入众多接口继承规则。  阅读全文
posted @ 2012-11-06 21:21 罗朝辉 阅读(3200) | 评论 (5)  编辑

     摘要: 类型转换就是将给定类型的表达式转换为另一种类型。C++中的转型可分为两种:隐式类型转换和显式类型转换。下面将详细介绍这两种转型操作,以及各自的适用场景,潜在问题,最终将总结使用类型转换操作应牢记的原则。  阅读全文
posted @ 2012-10-28 21:44 罗朝辉 阅读(6935) | 评论 (2)  编辑

     摘要: 当 timeout = 0, 即 Sleep(0),如果线程调度器的可运行队列中有大于或等于当前线程优先级的就绪线程存在,操作系统会将当前线程从处理器上移除,调度其他优先级高的就绪线程运行;如果可运行队列中的没有就绪线程或所有就绪线程的优先级均低于当前线程优先级,那么当前线程会继续执行,就像没有调用 Sleep(0)一样。

当 timeout > 0 时,如:Sleep(1),会引发线程上下文切换:调用线程会从线程调度器的可运行队列中被移除一段时间,这个时间段约等于 timeout 所指定的时间长度。为什么说约等于呢?是因为睡眠时间单位为毫秒,这与系统的时间精度有关。通常情况下,系统的时间精度为 10 ms,那么指定任意少于 10 ms但大于 0 ms 的睡眠时间,均会向上求值为 10 ms。  阅读全文
posted @ 2012-10-11 20:04 罗朝辉 阅读(6821) | 评论 (2)  编辑

     摘要: 数学函数备份。。。  阅读全文
posted @ 2010-06-04 18:38 罗朝辉 阅读(733) | 评论 (0)  编辑

     摘要: 这一系列文章介绍Microsoft Visual Studio 2010 中支持的C++ 0x特性,目前有三部分。
Part 1 :介绍了Lambdas, 赋予新意义的auto,以及 static_assert;
Part 2( 一 , 二 , 三 ):介绍了右值引用(Rvalue References);
Part 3:介绍了表达式类型(decltype)

VC10中的C++0x特性 Part 1,2,3 译文打包下载(doc 和 pdf 格式): 点此下载

本文是Part 3。  阅读全文
posted @ 2009-06-07 09:28 罗朝辉 阅读(2464) | 评论 (4)  编辑

     摘要: 简介

这一系列文章介绍Microsoft Visual Studio 2010 中支持的C++ 0x特性,目前有三部分。
Part 1:介绍了Lambdas, 赋予新意义的auto,以及 static_assert;
Part 2 (一, 二, 三):介绍了右值引用(Rvalue References);
Part 3:介绍了表达式类型(decltype)。

本文为Part 2 的第三页。  阅读全文
posted @ 2009-06-05 15:09 罗朝辉 阅读(2879) | 评论 (0)  编辑

     摘要: 这一系列文章介绍Microsoft Visual Studio 2010 中支持的C++ 0x特性,目前有三部分。
Part 1 : 介绍了Lambdas, 赋予新意义的auto,以及 static_assert;
Part 2 ( 一, 二, 三 ): 介绍了右值引用(Rvalue References);
Part 3 : 介绍了表达式类型(decltype)。

本文为Part 2 的第二页。  阅读全文
posted @ 2009-06-04 09:37 罗朝辉 阅读(2251) | 评论 (3)  编辑

     摘要: 这一系列文章介绍Microsoft Visual Studio 2010 中支持的C++ 0x特性,目前有三部分。
Part 1:介绍了Lambdas, 赋予新意义的auto,以及 static_assert;
Part 2:介绍了右值引用(Rvalue References);
Part 3:介绍了表达式类型(decltype)。

本文为Part 2 的第一页。  阅读全文
posted @ 2009-06-01 20:40 罗朝辉 阅读(2526) | 评论 (6)  编辑

     摘要: Microsoft Visual Studio 2010所带的Visual C++编译器对四个C++0x语言特性提供了支持,也就是 lambdas,auto,static_assert,以及 rvalue references 。今天,我将详细介绍前三个特性。(很快我将贡献一整篇幅的文章来解释右值引用,仅仅是因为再在这里解释的话将会加大这篇已经很长的文章的篇幅)  阅读全文
posted @ 2009-05-28 11:27 罗朝辉 阅读(4696) | 评论 (14)  编辑

     摘要: Head First design patterns读书笔记  阅读全文
posted @ 2008-07-20 23:31 罗朝辉 阅读(965) | 评论 (0)  编辑

     摘要: 《Expert C Programming》(《C专家编程》)中提到C语言声明的优先级规则如下:

A 声明从它的名字开始读取,然后按照优先级顺序依次读取;

B 优先级从高到低依次是:

B.1 声明中被括号括起来的那部分;

B.2 后缀操作符:括号()表示这是一个函数,而方括号[]表示这是一个数组;

B.3 前缀操作符:星号*标识“指向...的指针”;

C 如果const和(或者)volatile关键字的后面紧跟类型说明符(如int,long等),那么它作用于类型说明符,在其他情况下,const和(或)volatile关键字作用于它左边紧邻的指针星号。
  阅读全文
posted @ 2008-06-30 23:33 罗朝辉 阅读(542) | 评论 (1)  编辑

     摘要: Using LUA with C++

原文链接:http://www.spheregames.com/index.php?p=templates/pages/tutorials

作者:http://www.spheregames.com

翻译:飘飘白云(http://www.cppblog.com/kesalin )



译注:翻译本文并未获得原作者的许可,翻译本文来仅供个人学习消遣,故谢却转载。

原文中的示例代码汲取了《游戏编程精粹 5》中Matthew Harmon写的 “Building LUA into Games”一文的想法与部分代码实现,我将“Building LUA into Games”一文的示例代码应用到最新的LUA版本,也打包贴在这里,供大家参考。

Using LUA with C++:示例代码下载

Building LUA into Gam  阅读全文
posted @ 2008-06-17 12:38 罗朝辉 阅读(5167) | 评论 (0)  编辑