序列和迭代器(3) 2020-06-15 C++ list序列的更多元函数那么目前为止,我们完成了list序列7组基本元函数的调用和验证。不过我们不会就此满足,因为以上元函数能完成的工作有限,为了让序列能完成更多实用的功能,我们还需要进一步的对基础元函进行组合。有一个特别的好消息是,由于后续介绍的元函数都是由以上7组基本元函数组...
序列和迭代器(2) 2020-05-20 C++ list序列list序列实际上就是曾经介绍的seq序列的加强版,它的定义如下: struct list_tag {}; template <class... Args> struct list { using iterator_ca...
序列和迭代器(1) 2020-04-01 C++ 在前面的篇幅中我们已经看到了序列在模板元编程中的一部分作用。在本篇中我们将更加深入的探讨序列以及与之相关的算法,同时我们会使用建立迭代器的方法将这些算法抽象出来以方便它们运用到不同类型的序列中。在YAMPL中实现了两种类型的序列list和vector,本章中我将着重介绍list序...
YAMPL的基础组件(3) 2020-03-08 C++ 逻辑运算符元函数在C++中逻辑运算符可以将两个或多个关系表达式连接成一个,例如&&和||,也能够使表达式的逻辑反转,例如!。在这个小节中,我们将根据C++的逻辑运算符实现一套YAMPL可以使用的逻辑运算符元函数,除此之外我们还将结合上面的内容来完成一个元编程例子。...
YAMPL的基础组件(2) 2020-02-21 C++ 整型转换等级考虑一个简单的问题,在C++中将两个不同类型的整型操作数相加的结果会是怎么样的?比如用short类型的变量和long类型的变量相加。答案很简单,相加的结果应该是一个long类型,因为short类型隐式转换为long,于是就需要我们使用一个long类型的变量来存储计算结...
YAMPL的基础组件(1) 2020-01-09 C++ 从本篇开始,我们将开始进入轻量级C++模板元编程库YAMPL(Yet Another MPL)的编写环节。不过,在深入探索元编程的序列和算法之前,有一些基础工作必须完成,比如定义命名空间、定义整型常量包装类模板,编写包装类的算数和逻辑运算元函数、编写用于调试的类型打印元函数等等。...
元函数和序列(2) 2019-12-12 C++ 接着上一篇的话题 序列一说到序列,我们很容易想到STL中的容器vector。相对于数组,C++程序员显然更喜欢vector,这不仅是因为vector可以动态的扩展容器的空间,更是因为STL为它提供了一系列使用算法,比如插入、查找等等。事实上,关于STL序列的设计思路放在C++模板...
元函数和序列(1) 2019-11-11 C++ 元函数简单来说就是一种可以在编译期调用的函数,它操作的对象一定是编译期可以确定的,比如类型和常量。元函数也是模板元编程中最基础的组成部分,甚至代码中的选择和循环等控制流都是由元函数来完成。而序列则进一步释放了元函数的威力,我们可以通过元函数为序列提供丰富的算法以解决各种实际问题。...
初探C++模板元编程 2019-10-20 C++ C++模板元编程,通常来说是指利用模板控制编译器产生临时源代码的技术。该临时源代码可以和以后代码共同编译为可执行程序。由于模板元编程控制的是编译器,所以这个过程是在编译期进行,对于代码运行期的状态没有影响。 使用C++模板元编程编写的程序我们可以称之为模板元程序,最简单的模板元程...
打印机API相关的一点记录 2019-09-03 Tips 最近研究了一点Windows上打印相关的内容,发现打印这块的东西的确挺多的。比如纸张,分辨率,打印处理器,打印数据类型等等。 首先我们需要通过EnumPrintersW枚举打印机,为了方便我写了一个简单的类模板: template<class T = PRINTE...