boost、loki
boost、loki
闻缺陷则喜何志丹
本人拙作《喜缺全书算法册》欢迎指教,可在CSDN下载https://download.csdn.net/download/he_zhidan/88368465
展开
-
读loki有感,编译阶段发现两个类能否转化
开发环境:VS2005(VC8)以下代码在VS2002上运行不了,据说VS2002(VC7)不完全支持偏特化,VS2003(VC7.1)就支持了。问题提出:一,已知类型T,U,在编译阶段如何知道T能否转化成U。template struct ConversionHelper{ static long Test(...);//WQ注:C++中,不定参数已不需要“至少一原创 2015-01-21 18:04:59 · 920 阅读 · 0 评论 -
读loki:TYPEList有感一
问题一,简化版的TYPEList,只支持int型templateclass TYPEList{public: int Head; TYPEList Tail;};templateclass TYPEList{public: int Tail; int Head; };测试代码TYPEList l0; l0.Head = 1;原创 2015-01-22 14:09:17 · 805 阅读 · 0 评论 -
读loki有感,TYPEList原理
读loki有感,TYPEList原理问题一,简化版的TYPEList,只支持int型templateclass TYPEList{public: int Head; TYPEList Tail;};templateclass TYPEList{public: int Tail; int Head; };测试代码TYPEList l原创 2015-01-22 18:03:57 · 1012 阅读 · 0 评论 -
读loki有感 : 编译事(而不是运行时)的断言(assert)
本文环境:VS2005(VC8)问题一:如果int不是64位,编译无法通过。char test[sizeof(int)==8];//如果此行编译不过,原因:系统不是64位原理:数组的元素不能为0。类似情况:Window的int低位在前,高为在后。linux相反,安卓是基于linux的。问题二:较大类别不能转化成较小类别,比如:int到char。templateT原创 2015-01-23 12:04:09 · 936 阅读 · 0 评论 -
loki仿函数原理
loki仿函数原理问题一:已知函数Fun有2个参数,请完成CTestFunctor类,使得CTestFunctor的()实际调用Fun,部分代码如下:#include using namespace std ;class CTestCommand{public: void operator()(int x,double y) { cout }};原创 2015-01-26 12:07:35 · 864 阅读 · 0 评论 -
loki有感: 访问者模式
一,请输出类名和m_x值。不需要处理CRoot类,只需处理A,B类。CRoot还有一些派送类,也不考虑。class CRoot{public: int m_x;};class A : public CRoot{public: A() { m_x = 1; } };class B : public CRoot{public:原创 2015-01-27 15:44:08 · 753 阅读 · 0 评论 -
boost::any( 能存放任何类型的数据)原理
=====================templateclass any{public: T m_data;};void main(){ any a; }缺点是 必须知道类型,有时我们并不知道某个对象的类型。-------------class any{public: template any原创 2015-01-27 18:03:26 · 1258 阅读 · 0 评论 -
UnSignType
templateclass UnSignType{ //如果缺少Type 请用UNSIGN_TYPE宏添加偏特化};#define UNSIGN_TYPE(t) \templatestruct UnSignType \{\ typedef unsigned t TYPE;\};UNSIGN_TYPE(char)UNSIGN_TY原创 2015-02-05 11:39:53 · 716 阅读 · 0 评论 -
读boost::multi_array有感,多维数组实现(非类型模板,偏特化)
本文做如下简化:1,假定所有维元素都是5。2,不考虑const的[]。3,由于只是熟悉原理,不考虑各种异常情况。问题一,请实现一个一维整形数组,只需重载[]。问题二,请实现一个二维整形数组,只需重载[]。源码如下:class CIntArray1{public: int& operator[](int index) {原创 2015-01-21 12:07:03 · 1303 阅读 · 0 评论