自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 收藏
  • 关注

原创 C++提高——STL算法基础

1、算法概述算法部分主要由头文件<<<algorithm>>>,<<<numeric>>>和<<<functional>>>组成。<<<algorithm>是所有STL头文件中最大的一个,其中常用到的功能范围涉及到比较、交换、查找、遍历操作、复制、修改、反转、排...

2019-10-24 21:32:09 138

原创 C++提高——容器共性机制研究

1、容器的共通能力C++模板是容器的概念。理论提高: 所有容器提供的都是值(value)语意,而非引用(reference)语意。容器执行插入元素的操作时,内部实施拷贝动作。 所以STL容器内存储的元素必须能够被拷贝(必须提供拷贝构造函数)。除了queue与stack外,每个容器都提供可返回迭代器的函数,运用返回的迭代器就可以访问元素。通常STL不会丢出异常。要求使用者确保传入正确的参...

2019-10-23 21:35:40 86

原创 C++提高——Map和multimap容器

1、map/multimap的简介map是标准的关联式容器,一个map是一个键值对序列,即(key,value)对。它提供基于key的快速检索能力。map中key值是唯一的。集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。map的具体实现采用红黑树变体的平衡二叉树的数据结构。在插入操作和删除操作上比vector快。map可以直接存取key所对应的valu...

2019-10-23 20:52:50 114

原创 C++提高——Set和multiset容器

1、set/multiset的简介set是一个集合容器,其中所包含的元素是唯一的,集合中的元素按一定的顺序排列。元素插入过程是按排序规则插入,所以不能指定插入位置。set采用红黑树变体的数据结构实现,红黑树属于平衡二叉树。在插入操作和删除操作上比vector快。set不可以直接存取元素。(不可以使用at.(pos)与[]操作符)。multiset与set的区别: set支持唯一键值,每个...

2019-10-23 20:24:22 209

原创 C++提高——优先级队列priority_queue

最大值优先级队列、最小值优先级队列优先级队列适配器 STL priority_queue priority_queue<int, deque<int>> pq; priority_queue<int, vector<int>> pq; pq.empty() pq.size() pq.top() pq.pop() pq.pu...

2019-10-22 21:10:17 132

原创 C++提高——List容器

1、List简介list是一个双向链表容器,可高效地进行插入删除元素。list不可以随机存取元素,所以不支持at.(pos)函数与[]操作符。It++(ok) it+5(err) #include <list> 2、list对象的默认构造list采用采用模板类实现,对象的默认构造形式:list<T> lstT; 如:list<int&g...

2019-10-22 20:53:46 241

原创 C++提高——Queue容器

1、Queue简介queue是队列容器,是一种“先进先出”的容器。queue是简单地装饰deque容器而成为另外的一种容器。 #include <queue> 2、queue对象的默认构造queue采用模板类实现,queue对象的默认构造形式:queue<T> queT; 如:queue<int> queInt; ...

2019-10-22 20:00:29 92

原创 C++提高——stack容器

Stack简介stack是堆栈容器,是一种“先进后出”的容器。stack是简单地装饰deque容器而成为另外的一种容器。 #include <stack> 1、stack对象的默认构造stack采用模板类实现, stack对象的默认构造形式: stack <T> stkT; stack <int> stkInt; ...

2019-10-22 19:49:57 106

原创 C++提高——Deque容器

1、Deque简介deque是“double-ended queue”的缩写,和vector一样都是STL的容器,deque是双端数组,而vector是单端的。deque在接口上和vector非常相似,在许多操作的地方可以直接替换。deque可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法)。deque头部和尾部添加或移除元素都非常快速。但是在中部安插元素或移除元素比较...

2019-10-22 19:40:28 151

原创 论文《Point-Pattern Matching》学习

American University of ArmeniaOptimization ProjectSpring 2018Abstract点模式匹配的问题如下:您有一个点模式数据库(例如,不同的手写字母),您观察一个新模式,您的任务是从数据库中识别最接近这个新模式的模式。当然,人们过去常常使用神经网络来完成这个任务,但是这个项目将致力于解决方案的转换最小化方法。关键词:点模式匹配,向量,...

2019-10-22 19:02:32 430

原创 C++提高——Vector容器

1、Vector容器简介vector是将元素置于一个动态数组中加以管理的容器。vector可以随机存取元素(支持索引值直接存取, 用[]操作符或at()方法)。vector尾部添加或移除元素非常快速。但是在中部或头部插入元素或移除元素比较费时2、vector对象的默认构造vector采用模板类实现,vector对象的默认构造形式vector<T> vecT; vec...

2019-10-21 23:02:01 635

原创 C++提高——STL的string

1、String概念string是STL的字符串类型,通常用来表示字符串。而在使用string之前,字符串通常是用char* 表示的。string与char* 都可以用来表示字符串,那么二者有什么区别呢。string和char* 的比较string是一个类, char是一个指向字符的指针。string封装了char,管理这个字符串,是一个char*型的容器。string不用考虑内存释放...

2019-10-21 21:30:59 110

原创 C++提高——STL(标准模板库)理论基础

1、基本概念STL(Standard Template Library,标准模板库)是惠普实验室开发的一系列软件的统称。现然主要出现在C++中,但在被引入C++之前该技术就已经存在了很长的一段时间。STL的从广义上讲分为三类:algorithm(算法)、container(容器)和iterator(迭代器), 容器和算法通过迭代器可以进行无缝地连接。几乎所有的代码都采 用了模板类和模板函数的方...

2019-10-16 22:32:28 628

原创 C++提高——C++输入和输出流

1、I/O流的概念和流类库的结构程序的输入指的是从输入文件将数据传送给程序,程序的输出指的是从程序将数据传送给输出文件。C++输入输出包含以下三个方面的内容:对系统指定的标准设备的输入和输出。即从键盘输入数据,输出到显示器屏幕。这种输入输出称为标准的输入输出,简称标准I/O。以外存磁盘文件为对象进行输入和输出,即从磁盘文件输入数据,数据输出到磁盘文件。以外存文件为对象的输入输出称为文件的...

2019-10-15 21:55:57 646

原创 C++提高——异常处理机制专题

前言1)异常是一种程序控制机制,与函数机制独立和互补  函数是一种以栈结构展开的上下函数衔接的程序控制系统,异常是另一种控制结构,它依附于栈结构,却可以同时设置多个异常类型作为网捕条件,从而以类型匹配在栈机制中跳跃回馈.2)异常设计目的:栈机制是一种高度节律性控制机制,面向对象编程却要求对象之间有方向、有目的的控制传动,从一开始,异常就是冲着改变程序控制结构,以适应面向对象程序更有效地工...

2019-10-14 21:24:42 107

原创 C++提高——C++的类型转换

1 类型转换名称和语法C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)aC++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。static_cast 静态类型转换。如int转换成charreinterpreter_cast 重新解释类型dynamic_cast 命名上理解是动态类型转换。如子类和父类之间的多...

2019-10-13 21:33:16 96

原创 C++提高——函数模板和类模板

前言C++提供了函数模板(function template)。所谓函数模板,实际上是建立一个通用函数,其函数类型和形参类型不具体指定,用一个虚拟的类型来代表。这个通用函数就称为函数模板。凡是函数体相同的函数都可以用这个模板来代替,不必定义多个函数,只需在模板中定义一次即可。在调用函数时系统会根据实参的类型来取代模板中的虚拟类型,从而实现了不同函数的功能。1)C++提供两种模板机制:函数模板...

2019-10-12 21:20:23 165

原创 C++基础——纯虚函数和抽象类

1、基本概念2抽象类案例#include "iostream"using namespace std;class Figure //含有纯虚函数叫抽象类{public: //约定一个统一的界面和接口,让子类使用,让子类必须去实现 virtual void getArea()=0; //纯虚函数protected:private:};class Circle...

2019-10-09 21:25:31 302

原创 C++基础——多态

1多态1.1问题引出函数重写在子类中定义与父类中原型相同的函数函数重写只发生在父类与子类之间#include "iostream"using namespace std;class Parent{public: Parent(int a) { this->a=a; cout<<"Parent a:"<<a<<endl; ...

2019-10-09 20:30:04 145

原创 C++基础——继承和派生

1. 继承概念面向对象程序设计有4个主要特点:抽象、封装、继承和多态性。我们已经讲解了类和对象,了解了面向对象程序设计的两个重要特征一数据抽象与封装,已经能够设计出基于对象的程序,这是面向对象程序设计的基础。要较好地进行面向对象程序设计,还必须了解面向对象程序设计另外两个重要特 征——继承性和多态性。本章主要介绍有关继承的知识,多态性将在后续章节中讲解。继承性是面向对象程序设计最重要的特征,...

2019-10-08 22:27:08 742

原创 论文《A Correlation-Based Approach to Robust Point Set Registration》学习

摘要(2014年SCI四区)相关是一种非常有效的对齐强度图像的方法。我们使用一种称为核相关的方法将相关技术扩展到点集注册。核相关是一种亲和关系,也是点集熵的函数。我们将点集注册问题定义为找出两个要注册的点集的最大内核相关配置。该配准方法解释直观,算法实现简单,易于证明其收敛性。与迭代最近点(ICP)和EM-ICP方法相比,我们的方法具有良好的性能。1. Introduction点集配准是视...

2019-10-05 22:05:33 899 2

原创 C++基础——运算符重载

1. 概念1.1 什么是运算符重载**所谓重载,就是重新赋予新的含义。**函数重载就是对一个已有的函数赋予新的含义,使之实现新功能,因此,一个函数名就可以用来代表不同功能的函数,也就是”一名多用”。运算符也可以重载。实际上,我们已经在不知不觉之中使用了运算符重载。例如,大 家都已习惯于用加法运算符”+”对整数、单精度数和双精度数进行加法运算,如5+8, 5.8 +3.67等,其实计算机对整...

2019-10-05 17:08:31 336

原创 C++基础——友元

1. 友元函数class A1{public: A1() { a1 = 100; a2 = 200; } int getA1() { return this->a1; } //声明一个友元函数 friend void setA1(A1 *p, int a1); //这个函数是这个类的好朋友 protected:private: int a1; ...

2019-10-04 20:22:54 76

原创 C++基础——面向对象模型初探

前言C++对象模型可以概括为以下2部分:语言中直接支持面向对象程序设计的部分,主要涉及如构造函数、析构函数、虚函数、继承(单继承、多继承、虚继承)、多态等等。对于各种支持的底层实现机制。在c语言中,“数据”和“处理数据的操作(函数)”是分开来声明的,也就是说,语言本身并没有支持“数据和函数”之间的关联性。在c++中,通过抽象数据类型(abstract data type,ADT),在类中...

2019-10-04 20:17:27 122

原创 C++基础——静态成员变量成员函数

1. 静态成员变量关键字 static 可以用于说明一个类的成员,静态成员提供了一个同类对象的共享机制把一个类的成员说明为 static 时,这个类无论有多少个对象被创建,这些对象共享这个 static 成员静态成员局部于类,它不是对象成员#include "iostream"using namespace std;class BB{public: void printt...

2019-10-03 21:31:47 155

原创 C++基础——对象的构造和析构

创建一个对象时,常常需要作某些初始化的工作,例如对数据成员赋初值。注意,类的数据成员是不能在声明类时初始化的。C++编译器提供了构造函数(constructor)来处理对象的初始化。构造函数是一种特殊的成员函数,与其他成员函数不同,不需要用户来调用它,而是在建立对象时自动执行。3.1 构造和析构函数1. 构造函数和析构函数的概念有关构造函数1 构造函数定义及调用1)C++中的类可以定义...

2019-10-03 21:20:50 327

原创 C++基础——类和对象

1. 基本概念1) 类、对象、成员变量、成员函数2) 面向对象三大概念封装、继承、多态2. 类的封装1)封装(Encapsulation)A)封装,是面向对象程序设计最基本的特性。把数据(属性)和函数(操作)合成一个整体,这在计算机世界中是用类与对象实现的。B)封装,把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。备注:有2层...

2019-10-03 19:05:31 111

原创 C++基础——函数重载

函数重载1. 概念用同一个函数名定义不同的函数当函数名和不同的参数搭配时函数的含义不同2. 判断标准函数重载至少满足下面的一个条件:参数个数不同参数类型不同参数顺序不同3. 函数返回值不是函数重载的判断标准实验1:调用情况分析;实验2:判断标准#include "iostream"using namespace std;int func(int x){ return...

2019-10-01 22:16:33 142

原创 C++基础——函数参数扩展

1. 默认参数C++中可以在函数声明时为参数提供一个默认值,当函数调用时没有指定这个参数的值,编译器会自动用默认值代替。 #include <iostream>using namespace std;void myPrint(int x = 3){ cout<<"x :"<<x<<endl;}//void myPrint2( ...

2019-10-01 19:54:04 177

原创 C++基础——内联函数

C++中的const常量可以替代宏常数定义,如:const int A = 3; #define A 3C++中是否有解决方案替代宏代码片段呢?(替代宏代码片段就可以避免宏的副作用!)C++中推荐使用内联函数替代宏代码片段C++中使用inline关键字声明内联函数内联函数声明时inline关键字必须和函数定义结合在一起,否则编译器会直接忽略内联请求。//宏替换和函数调用区别...

2019-10-01 19:42:10 122

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除