- 浏览: 256546 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
satan_1st:
据说可以用(*this)取得当前的lambda。
Recursive Lambda in C++ -
febird:
微软不死, 天理难容
再抱怨一下Windows7 -
sunzixun:
很有见解ace也可以精简的,我们就用阉割版的
asio/ACE/apr/libevent -
febird:
hamo2008 写道用win7以来基本上没有遇到这种情况了我 ...
造 windows 的微软很脑残 -
hamo2008:
用win7以来基本上没有遇到这种情况了
造 windows 的微软很脑残
项目地址:http://code.google.com/p/febird
/** @brief 生成一个比较器(Comparator),兼键提取(KeyExtractor)类 使用这个宏生成的比较器可以作用在不同的对象上,只要这些对象有相同名称的成员, 并且可以作用在类型为成员类型的对象上。 - 假设: - 有 n 个类 class[1], class[2], ... class[n],都有类型为 MemberType ,名称为 MemberName 的数据成员 - 那么以下类型的对象可以使用该类相互比较,并且可以从这些对象中提取出 MemberType 类型的键: class[1] ... class[n], MemberType, 以及所有这些类型的任意级别的指针 @param ComparatorName 比较器类的名字 @param MemberType 要比较的对象的成员类型 @param MemberName 要比较的对象的成员名字,也可以是一个成员函数调用, 前面必须加 '.' 或者 '->', 加 '->' 只是为用于 smart_ptr/iterator/proxy 等重载 '->' 的对象 当用于裸指针时,仍使用 '.',这意味着裸指针和 smart_ptr/iterator/proxy 不能使用同一个生成的 Comparator,虽然裸指针的语法和它们都相同 @param ComparePred 比较准则,这个比较准则将被应用到 XXXX MemberName @note - 这个类不是从 ComparePred 继承,为的是可以允许 ComparePred 是个函数, 但这样(不继承)阻止了编译器进行空类优化 - 不在内部使用 const MemberType&, 而是直接使用 MemberType, 是为了允许 MemberName 是一个函数时,返回一个即时计算出来的 Key; - 当为了效率需要使用引用时,将 const MemberType& 作为 MemberType 传进来 - 当 MemberType 是个指针时,将 Type* 作为 MemberType ,而非 const Type*,即使 MemberType 真的是 const Type* - 注意 C++ 参数推导机制: @code template<T> void f(const T& x) { } // f1 template<T> void f(const T* x) { } // f2 template<T> void g(const T& x) { } // g1 template<T> void g(const T* x) { } // g2 template<T> void g( T& x) { } // g3 template<T> void g( T* x) { } // g4 void foo() { int a; const int b; f(&a); // call f1, T was deduced as int*, and then convert to 'const int*&', so match f1, not f2 f(&b); // call f2, T was deduced as int g(&a); // call g4, T was deduced as int g(&b); // call g2, T was deduced as int } @endcode 在上述代码已经表现得比较明白了,这就是要生成四个不同 deref 版本的原因 - 为了配合上述机制,传入的 MemberType 不要有任何 const 修饰符 */ #define SAME_NAME_MEMBER_COMPARATOR_EX(ComparatorName, MemberType, MemberName, ComparePred) \ class ComparatorName \ { \ ComparePred m_comp; \ public: \ typedef bool result_type; \ typedef MemberType key_type; \ typedef boost::integral_constant<bool, \ febird::HasTriCompare<ComparePred>::value \ > has_tri_compare; \ \ ComparatorName() {} \ ComparatorName(const ComparePred& rhs) \ : m_comp(rhs) {} \ \ template<class T>const T&deref(T*x)const{return*x;} \ template<class T>const T&deref(T&x)const{return x;} \ template<class T>const T&deref(const T*x)const{return*x;}\ template<class T>const T&deref(const T&x)const{return x;}\ \ const MemberType operator()(const MemberType x)const{return x;} \ template<class T>const MemberType operator()(const T&x)const{return deref(x)MemberName;}\ \ template<class Tx, class Ty> \ bool operator()(const Tx&x, const Ty&y) const \ { \ return m_comp((*this)(x),(*this)(y)); \ } \ template<class Tx, class Ty> \ int compare(const Tx&x, const Ty&y) const \ { \ return m_comp.compare((*this)(x),(*this)(y)); \ } \ }; //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #endif // #define SAME_NAME_MEMBER_COMPARATOR_EX(ComparatorName, MemberType, MemberName, ComparePred) \ // SAME_NAME_MEMBER_COMPARATOR_EX_NO_TRAITS(ComparatorName, MemberType, MemberName, ComparePred)\ // BOOST_TT_AUX_BOOL_TRAIT_SPEC1(HasTriCompare, ComparatorName, HasTriCompare<ComparePred>::value) //! note@ if MemberType must not be a reference, neither const nor non-const #define SAME_NAME_MEMBER_COMPARATOR(ComparatorName, MemberType, MemberName) \ SAME_NAME_MEMBER_COMPARATOR_EX(ComparatorName, MemberType, MemberName, std::less<MemberType>)
项目地址:http://code.google.com/p/febird
发表评论
-
对数复杂度的聚集算法
2010-08-05 18:24 722SQL 有5个标准聚集函数:SUM, AVG, MIN, MA ... -
使用 std::map 查找 IP 范围
2010-08-05 17:40 2002给定这样一个问题: 有一组从IP范围到地理位置信息的数据 ... -
tcmalloc 要点
2010-02-22 11:33 1494google.tcmalloc 线程缓存(th ... -
my PipelineProcessor
2010-02-01 15:43 725刚看到,intel tbb::pipeline 实现的功能,和 ... -
简单的代码生成器创建领域语言
2010-02-01 14:30 1248有一类问题,代码模板相同,但有少部分地方不同,一般可以写一个复 ... -
理想的 lazy load
2010-01-12 20:21 767在linux中碰到一个问题,可以描述如下 编译 liba.s ... -
字符串基数排序
2009-12-09 22:00 1824对字符串使用基数排序,以前,我一直觉得:因为字符串的长度不 ... -
内嵌变长数据结构范例——trbstrmap<mapped>
2009-11-03 17:43 804以前的这篇文章介绍了嵌入的变长数据结构(embeded ... -
memory pool 的高效实现
2009-10-23 02:40 2789memory pool malloc可以分配任意大小的内存, ... -
memory pool 的高效实现(代码)
2009-10-23 03:01 6756mpool.h #ifndef __febird_c_mpo ... -
可变长度数据结构
2009-09-27 17:12 1073固定长度的数据结构很简单,大家每天都在用。 可变长度数据结构 ... -
malloc/free 的开销,如何去掉这种开销?
2009-10-18 15:58 1855一般的malloc实现,对一块已分配的内存,都有两个机器字的簿 ... -
世界上应用最广泛的虚拟机是啥?
2009-10-18 16:19 871别说是JavaVM! 正确答案:x86vm x86本身是一 ... -
memory FILE in C
2009-06-30 17:18 986<script>function StorePag ... -
很基本也很诡异的fread, feof
2009-07-03 18:12 3000先看一段非常简单的程序: #include & ... -
Threaded Red-Black Tree 线索红黑树
2009-05-26 19:19 874项目地址:http://code.google.com/p/f ... -
C 语言实现的 stl-like 算法
2009-04-08 10:46 1040使用类似BOOST.PP技巧,自动生成代码,效率上小胜stl, ... -
使用" 参数化基类" 和" 成员函数指针" 模拟实现虚函数--在实际中的应用
2005-12-02 23:01 1155// 使用" 参数化基类" 和" ... -
千万注意,不要 hack std::string
2007-02-25 14:49 1069前段时间被一个bug折磨了两个星期,最后发现竟然是如此一个陷阱 ... -
通用的 LoserTree
2008-04-22 15:14 1359项目地址:http://code.google.com/p/f ...
相关推荐
VHDL,全称是VHSIC(Very High Speed Integrated Circuit)硬件描述语言,是一种用于电子设计自动化领域的编程语言,广泛应用于数字...对于学习数字电路、嵌入式系统或者硬件设计的人来说,这是一个很好的实践案例。
【标题】"AAC2M1P1_TheTest_comparator_源码" 指的是一个与比较器(Comparator)相关的源代码项目,这个项目的测试部分可能被命名为"TheTest"。在数字电路设计中,比较器是一种基本的逻辑组件,用于比较两个数字输入...
Java验证码生成库JCaptcha是一个强大的安全工具,用于创建和验证在Web应用中广泛使用的图形验证码。验证码的主要目的是防止自动化的机器人或恶意脚本执行非法操作,例如注册虚假账户、发送垃圾邮件或者进行其他非...
文档还解释了ADC的采样过程和采样原理(SOC Principle of Operation),这对于理解ADC如何开始一个转换周期是至关重要的。另外,还提及了ADC转换优先级设置,这关系到系统如何决定哪个信号应该先被转换。对于需要...
Random是Java中的一种随机数生成器,用于生成随机数。Random类提供了许多有用的方法,例如nextInt()、nextDouble()等。 生成随机字符串数组的步骤 1. 创建一个String类型的字符串,用于存储所有的字母和数字。 2. ...
Comparator接口是Java集合框架的一部分,它定义了一个比较两个对象的方法——compare(),用于自定义对象的排序规则。通过实现Comparator接口,我们可以根据特定逻辑来比较对象,使得排序更灵活,适用于各种复杂的...
在“FPGA中Verilog语言实现生成三角波”的项目中,我们需要设计一个能够产生连续三角波的时序逻辑电路。三角波的生成通常基于计数器和比较器的原理。首先,一个计数器(如二进制或模N计数器)会随着时间递增或递减其...
”说明了这个压缩包提供的VHDL代码是一个简单的PWM波形生成器的设计,适合初学者参考学习。这可能包含一个基本的脉冲宽度调制器的结构,以及如何在VHDL中定义和控制脉冲的宽度。 在标签“pwm pwm__vhdl pwm_vhdl”...
为了实现字母排序的侧边栏,开发者可能创建了一个SlidingDrawer或者使用了SwipeRefreshLayout,或者直接在布局文件中添加了一个固定在侧边的LinearLayout,包含所有字母按钮。每个按钮都有一个点击监听器,当用户...
这个"PWM.rar_made_pwm vhdl"压缩包包含的正是一个使用 VHDL 实现的 PWM 生成器的设计实例。 首先,我们来看 `test_pwm.vhd` 文件。这通常是一个测试平台或者激励文件,用于验证 PWM 生成模块的功能。它会创建必要...
对于8位比较器,我们需要比较两个数的每一位,并根据这些比较结果生成一个最终的比较标志。这个标志可能包括"大于"、"小于"或"等于"的信号。 为了实现这个功能,我们可以创建一个主类"Comparator",它包含8个独立的...
这个方便的工具使我们可以生成和比较网站屏幕截图,以获得任何可能的分辨率。 要求 您需要节点版本高于8且低于10 安装 如果要将项目安装为独立应用程序,请克隆项目并运行npm install 如果要将项目安装为应用程序的...
在本文中,我们将深入探讨如何使用Xilinx的Vivado工具在FPGA(Field Programmable Gate Array)上实现一个比较器。FPGA是一种可编程逻辑器件,它允许开发者根据需求自定义硬件逻辑,广泛应用于数字信号处理、图像...
更复杂的设计通常会在Simulink环境中进行,通过组合各种单元,如`Sine Wave`、`Comparator`和`Sample Time Controller`等,来构建一个完整的PWM生成系统。 3. **PWM应用**:PWM技术广泛应用于逆变器、开关电源、...
本教程将详细解释如何利用MATLAB开发一个生成PWM锯齿波的系统。 首先,理解PWM的基本概念至关重要。PWM是一种模拟信号通过开关频率在数字信号之间转换的技术,其基本原理是通过改变占空比来调节输出电压的平均值。...
6,写一个类Zoo,要求分别生成若干个Animal,Fish和Bird。并调用他们的属性和方法。 7,写Shape类,要求如下: 1.int类型属性x和y,分别表示图形的中心点坐标 2.无参构造器 3.构造器,对x和y进行初始化 4.draw()...
"test bench waveform2d34"则暗示存在一个测试平台,用于生成和分析Comparator的2D和3D波形,以确保其功能正确无误。 在标签中,"unity3d"进一步确认了这个项目是使用Unity开发的,"TheTest"可能是一个测试关卡或者...
例如,如果我们要对一个包含`Person`对象的列表按年龄和名字进行排序,我们可以创建两个不同的`Comparator`:一个用于比较年龄,另一个用于比较名字。 接下来,我们来看看如何使用多个比较器。在某些情况下,单个...
总之,PWM单相逆变器在电力电子中扮演着重要角色,而MATLAB/SIMULINK提供了一个直观且强大的平台,使得理论研究和实际应用的结合变得更为便捷。通过深入研究和仿真“pwm.mdl”,我们可以对逆变器的设计和控制有更...
### STM32L4 比较器 (COMP) 详细介绍 #### 一、概述 在微控制器领域,STM32L4系列以其卓越的性能和低功耗特性备受推崇。...对于需要精确模拟信号处理的应用而言,STM32L4 的比较器无疑是一个强大的工具。