模板类

手打 splay_tree 模板类 支持 find, rank, 前驱后继, iterator

匿名 (未验证) 提交于 2019-12-03 00:42:01
迭代器中序遍历整棵树,++或--为前驱后继 可重复插入,查找,排名(<或<=),删除,大小,相同元素个数 功能超全的 stl-like splay 平衡树,摈弃平板电视,还不快收入囊中! 插入删除的方式为new/delete,不喜勿喷~ #include <algorithm> using namespace std; template<typename T> class splay_tree_iterator; template<typename T, typename _Less = less<T>, typename _Equ = equal_to<T>> class splay_tree { public: friend class splay_tree_iterator<T>; typedef _Less lesscmp; typedef _Equ equcmp; typedef splay_tree_iterator<T> iterator; splay_tree() : _r(nullptr) { } iterator root() { return iterator(_r); } iterator begin() { _node *p = _r; if(!p) return iterator(nullptr); while(p->s[0]) p = p->s[0];

QT: QList模板类接口函数

匿名 (未验证) 提交于 2019-12-02 23:34:01
插入操作:insert() 函数原型: void QList::insert(int i, const T &value) 在索引后插入值 i:索引 value:插入值 Example: QList<QString> list; list << "alpha" << "beta" << "delta"; list.insert(2, "gamma"); // list: ["alpha", "beta", "gamma", "delta"] 替换操作:replace() 函数原型: void QList::replace(int i, const T &value) 替换索引处的值 i:索引 value:替换值 Example: QList<QString> list; list << "alpha" << "beta" << "delta"; list.replace(2, "aaa"); // list: ["alpha", "beta", "aaa"] 移除操作:removeAt() 函数原型: void QList::removeAt(int i) 移除索引位置处的值 i:索引 移动操作:move() 函数原型: void QList::move(int from, int to) 从哪个索引位置移动到哪个索引位置 Example: QList<QString> list;

C++学习三 模板类出错总结(Missing template arguments before 'L')

百般思念 提交于 2019-12-01 13:50:11
一、模板类的说明   模板类有一个好处是可以放宽你输入的数据类型。   比如有这样的一个函数: int add(int x, int y) { return x+y; }   这个函数对于int类型的x,y才适合,但是如果我们希望计算float类型的呢?   这必须重新定义一个函数(函数重载也可以实现) float add(float x, float y) { return x+y; }   但是这样显然太麻烦,所以模板类可以解决这个问题 二、一个例子   书上的一个例子用作说明    #include <iostream> using namespace std; template <typename Type> //这一步说明了你要定义一个模板类,数据类型名字是Type(比如可能是int, float,等等) class Calc { public: Calc (); Type multiply (Type x, Type y);//类型都是Type Type add (Type x, Type y);//这里是函数的声明 }; template <typename Type> Calc<Type>::Calc () { } template <typename Type> Type Calc<Type>::multiply (Type x, Type y) { return

2017/07/15 puppet类和模板(04)

不问归期 提交于 2019-11-29 04:56:39
之前讲了puppet当中的编程元素,包括变量,和流程控制语句,当中的条件判断,if unless,case和selector,这些流程控制语句可以在条件满足的时候,来完成流程控制事的所谓配置文件的编写 但是有时候我们需要用代码来完成重用,事实上对于configuration 而言, 支持另外两种编程元素,函数,类,用的最多是类 puppet的编程源支持两种编程方式,过程式编程和对象式编程,ruby本身就是对象式编程,在puppet代码中也支持类,要想能去配置nginx,nginx有两种功能,web server,反代reverse proxy(7层反代。,4层反代) 配置起来的步骤,无非就是安装程序包,提供配置文件,启动服务 无非就是配置文件不一样 安装程序包,和启动程序,这段配置是可以进行公用的,所以可以把安装包和启动程序定义成一个公共的模块,而后在定义,三个子功能都能调用这个公用的公共模块 而在类的架构当中,这种方式十分容易实现 先定义一个父类,父类其实有两个资源,1.安装程序包,2.启动服务 而后再定义三个子类分别去继承父类,而后在子类中定义一个新资源,比如提供配置文件A文件 再定一个子类,也添加一个文件资源,继承父类 从父类可以得到一部分定义,在本地直接调用使用 父类也叫做基类,这里类更像是过程式编程中的函数,所不同的是,比函数功能更强大,不但能继承,还能重载某些运算符

puppet (四)类、模块、模板

杀马特。学长 韩版系。学妹 提交于 2019-11-29 01:46:57
类:class 用于公共资源的一组资源,是命名的代码块,创建互殴可在puppet全局进行调用,类可以被继承 语法资源: class class_name { ...puppet code... } 注意:类名只能包含小写字母、数字、下划线且必须以小写字母开头 类定义实例: 声明类方式: 1.include:include+类名可以以逗号相隔,声明多个类 2.require:require+类名 3.resource:class{‘类名’:里面还可以写一些属性}类似资源的调用,资源用type 4.ENC 1和3比较常用 类只有在声明之后才能被执行 定义能够接受参数的类 定义: class 类名($arg1='value1',$arg2='value2'){ ...code... } 传参: class{‘类名’: arg1 =>'nginx' } 类继承: 定义方式:    class base_class ::class_name inherits basee_class ,父类名::类名,base_class ::class_name只是一个名字,本身没有继承功能,就行起名的时候带上父亲的名字一样 作用:   在于继承一个已有的类,并且实现覆盖资源属性,或向资源属性追加额外值   => 覆盖 +>追加 类继承时:   1.声明子类时,其基类会被自动首先声明   2

Eigen 3.3.7,Matrix 模板类

故事扮演 提交于 2019-11-27 00:27:31
Eigen 3.3.7,Matrix 模板类 原文地址: http://eigen.tuxfamily.org/dox/group__TutorialMatrixClass.html 在 Eigen 中,所有的矩阵和向量都是 Matrix 模板类。向量是特殊的矩阵,有着一行或者一列数据。 Matrix 的前三个模板参数 Matrix 有六个模板参数,这里我们只介绍前三个。后三个模板参数有默认值,我们将在其他小结中做介绍。 前三个模板参数如下所示: Matrix<typename Scalar, int RowsAtCompileTime, int ColsAtCompileTime> Scalar 是矩阵中元素的类型。如果你想构建一个由浮点数组成的矩阵,将当前参数设置为float即可 RowsAtCompileTime和ColsAtCompileTime用来在编译时确定矩阵的尺寸 Eigen 提供了一些常用的矩阵类型,比如 Matrix4f,在Eigen中其定义如下: typedef Matrix<float, 4, 4> Matrix4f; 向量 Eigen 中向量是特殊的矩阵,有一列或者一行数据。有一列数据的向量被称之为列向量(Eigen中的向量默认为列向量),有一行数据的向量被称为行向量。 举个例子,内置的 列向量 Vector3f类型在Eigen中的定义如下: