- 博客(22)
- 收藏
- 关注
转载 C++面试准备(一)
一、C和C++的区别1、设计思想上:C++是面向对象的语言,而C是面向过程的结构化编程语言2、语法上:(1)C++具有封装、继承和多态三种特性(2)C++相比C,增加多许多类型安全的功能,比如强制类型转换、(3)C++支持范式编程,比如模板类、函数模板等二、static关键字作用1. 全局静态变量在全局变量前加上关键字static,全局变量就定义成一个全局静态变量。静态存储区,在整个程序运行期间一直存在。初始化:未经初始化的全局静态变量会被自动初始化为0(自动对象的值是任意的,除非他被
2020-09-24 11:21:42
292
原创 C/C++学习——类的定义
基本概念:一、抽象:对具体对象(问题)进行概括,抽出这一类对象的公共性质并加以描述的过程。数据抽象和行为抽象二、将抽象出的数据成员、行为成员相结合,将他们视为一个整体------类使用者不需要了解具体的实现细节,只需要通过接口实用类成员即可。三、继承与派生:保持原有类特性的基础上,进行更具体的说明。定义类一、定义类1、类:是用户自定义数据类型。如果程序中要使用类类型(class type),必须根据实际需要定义,或者使用已设计好的类。class 类名{成员列表;//数据成员类型 数据成员
2020-07-18 17:49:34
1721
原创 PCL——点云分割(基于法线微分的分割——DON)
基于点云频率的滤波方法DON点云滤波DoN算法应该算是一种比较先进的点云滤波算法。分割本质上还是由欧式分割算法完成的。算法的目的是在去除点云低频滤波,低频信息(例如建筑物墙面,地面)往往会对分割产生干扰,高频信息(例如建筑物窗框,路面障碍锥)往往尺度上很小,直接采用 基于临近信息 的滤波器会将此类信息合并至墙面或路面中。所以DoN算法利用了多尺度空间的思想,算法如下:(1) 在小尺度上计算点云法线1(2)在大尺度上计算点云法线2(3)法线1-法线2(4) 滤去3中值较小的点(5) 欧式分割
2020-06-21 19:39:31
4358
4
原创 PCL——点云分割(最小图分割)
最小图分割参考文章:pcl最小图割(pcl::MinCutSegmentation)算法此类方法把图像分割问题与图的最小割(min cut)问题相关联。(1)首先用一个无向图G=<V,E>表示要分割的图像,V和E分别是顶点(vertex)和边(edge)的集合。(2)此处的Graph和普通的Graph稍有不同。普通的图分为有向图和无向图;由顶点和边构成,如果边的有方向的,这样的图被则称为有向图,否则为无向图,且边是有权值的,不同的边可以有不同的权值,分别代表不同的物理意义。(3)而G
2020-06-20 21:35:54
3064
3
原创 PCL——点云分割(区域生长的分割)
点云分割是根据空间、几何和纹理等特征对点云进行划分,使得同一划分内的点云拥有相似的特征。基于区域生长的分割种子点:根据点的曲率值对点云进行排序,曲率最小的点叫做初始种子点,(1)区域生长算法从曲率最小的种子点开始生长,初始种子点所在区域为最平滑区域,从初始种子点所在的区域开始生长可减小分割片段的总数,从而提高算法的效率。(2)设置一空的聚类区域C和空的种子点序列Q,聚类数组L。(3)选好初始种子点,将其加入种子点序列Q中,并搜索该种子点的领域点,计算每一个领域点法线与种子点法线之间的夹角,小于设定
2020-06-20 17:53:42
5521
原创 C/C++学习——自定义数据类型——链表
链表的概念一、链表的概念1、链表是一种存储空间能动态进行增长或缩小的数据结构。2、链表主要用于:(1)建立不定长度的数组。(2)可以在不重新安排整个存储结构的情况下,方便且迅速地插入和删除数据元素。3、链表广泛应用于数据管理中。二、结点 struct NODE{//结点数据类型 ElemType data;//数据域 NODE *link;//指针域 };1、ElemType 可以是简单的内置数据类型,也可以是复杂的数据类型,typedef struct t
2020-06-15 21:11:35
2263
原创 PCL——预处理(滤波)
点云滤波滤波在获取点云数据时,由于设备精度、操作者经验、环境因素等带来的影响,点云数据中不可避免的出现了一些噪声点(就是自己用不到的点),我们在处理数据时,需要把这些点去除掉,这个过程叫滤波。一、pcl中的点云滤波方案(1)点云数据密度不规则需要平滑(2)因为遮挡等问题造成离群点需要去除(3)大量数据需要进行下采样(Downsample)。(4)噪声数据需要去除。对应方法如下:(1)按具体给定的规则限制过滤去除点。(2)通过常用滤波算法修改点的部分属性。(3)对数据进行下采样。直通滤
2020-06-13 15:32:29
855
原创 C/C++学习——自定义数据类型(结构体,共用体)
结构体类型数组是一种数据形式,其特点是多个相同类型的元素集合起来;结构体是另一种重要的数据形式,特点是将不同类型的成员组合起来。数组和结构体形成了两种风格迥异的聚合方式,通过他们及其相互组合、嵌套的机制可以构造出复杂的、满足应用要求的自定义数据类型。一、定义结构体类型struct 结构体类型名 {成员列表};struct STUDENT{ int no; char name[21]; char sex; int age; char qq[11]; double scor
2020-06-10 20:48:47
1103
原创 C/C++学习——动态分配内存
new与delete运算符一:c++内存分配有两种方式:静态分配和动态分配1、静态分配:在编译时为程序中的数据对象分配相应的存储空间。由于实在编译时为数据对象分配存储空间,因此就要求在编译时空间大小必须明确,所以数组的长度必须是常量,而一旦编译完成,运行期间这个数组的长度就是固定不变的。2、动态分配:程序运行期间根据实需要动态地申请或释放内存的方式,他不象数组等静态内存分配方式那样需要预先分配存储空间,而是根据程序的需要适时分配,且分配的大小就是程序要求的大小。(1)不需要预先分配存储空间;(2
2020-06-06 17:43:06
414
原创 C/C++学习——指针与函数
指针作为函数的参数一、一般定义形式为:返回类型 函数名(指向类型 *指针变量名){函数体}#include <iostream>using namespace std;void swap(int *p1, int *p2){ int temp; temp = *p1; *p1 = *p2; *p2 = temp;}int main(){ int a, b; cin >> a >> b; if (a > b) { s
2020-06-02 20:33:44
865
原创 C/C++学习——指针与数组
一维数组与指针一、一维数组的地址1、数组由若干个元素组成,每个元素都有相应的地址,通过取地址运算符(&)可以得到每个元素的地址。2、C++规定,数组名即代表数组本身,又代表整个数组的地址,还是数组首元素的地址值,即a与第0个元素的地址&a[0]相同。3、数组名是一个指针常量,因而它不能出现在左值和某些算术运算中。二、指向一维数组的指针变量定义指向一维数组元素的指针变量时,指向类型应该与数组元素类型一致。三、通过指针访问一维数组int *p,a[10]={1,2,3};p=a
2020-05-31 18:06:39
216
原创 C/C++学习——指针的定义和使用
一、指针的概念在程序设计过程中,无论是存入数据还是取出数据,都需要与内存单元打交道,计算机通过地址编码来表示内存单元。指针类型就是为了处理计算机的地址数据的。指针除了能够提高程序的效率,更重要的作用是能使一个函数访问另外一个函数局部变量,因此指针使两个函数进行数据交换必不可少的工具。1、地址和指针的概念程序中的数据对象总是存放在内存中,在生命期内这些对象占据一定的存储空间,有确定的存储位置。每个内存单元都有一个地址,即以字节为单位连续编码。编译器将程序中的对象名转化成机器指令能识别的地址,通
2020-05-31 16:14:49
792
原创 C/C++学习——数组的应用(经典算法)
排序一、冒泡排序冒泡排序的基本思想是通过相邻两个记录之间的比较和交换,使关键码较小的记录逐渐从底部移向顶部(上升),关键码较大的记录从顶部移向底部(沉底),冒泡由此得名。#include <iostream>using namespace std;int main(){ int A[7],temp; for (int i = 0; i < 7; i++)//输入元素 { cin >> A[i]; } for (int k = 0; k <
2020-05-30 19:07:42
346
原创 C/C++学习——字符串的处理
字符数组一、字符数组的定义char 字符数组名[常量表达式],…;char s[20];char s[4]={'J','A','V','A');二、字符串的概念1、C++语言规定字符串是以‘\0’(ASCII的值为0)字符作为结束符的字符数组。2、只要遇到数组元素是空字符,就表示字符串在此位置上结束。3、由于字符串实际存放在字符数组中,所以定义字符数组时数组的长度至少为字符串长度加1(空字符也要占位);4、字符串常量是字符串的常量形式,他是一对双引号括起来的字符序列。5、C++总是在
2020-05-27 22:05:47
421
原创 C/C++学习——数组与函数
数组作为函数的参数一、数组元素作为函数的参数1、一维数组元素可以直接作为函数实参使用,其用法与变量相同int max(int a,int b);int A[5]={1,2,3,4,5];x=max(A[2],5);2、整个数组作为函数的参数基本形式为:返回类型 函数名(类型 数组名[常量表达式],…){函数体}(1)数组参数的传递机制void fun(int A[10],int n){ A[0]=10;}int main(){ int a[10]={1,2,3
2020-05-26 22:03:36
377
原创 C/C++学习——数组的定义和初始化
一维数组数组就是一组相同类型数据的集合。1、定义:元素类型 数组名[常量表达式];int A[10];注意:(1)由元素类型,数组名和长度组成。(2)数组一经定义,数组的长度始终不变。int n;cin>>n;int A[n]//错误,n必须为常量。(3)C++规定数组元素是连续存放的,即在内存中是线性排列。2、一维数组的初始化(1)元素类型 数组名[常量表达式]={初值列表}int A[5]={1,2,3,4,5};(2)可以不指定长度进行初始
2020-05-25 21:24:02
3208
原创 C/C++学习——函数的调用
函数的嵌套调用函数的嵌套调用这节,注重对代码的理解(递归的调用)。函数的嵌套调用示例一:#include <iostream>using namespace std;int fa(int a, int b);int fb(int x);int main(){ int a = 5, b = 10, c; c = fa(a, b); cout << c << endl; c = fb(a + b); cout << c <<
2020-05-24 16:40:57
214
原创 C/C++学习——函数的设计
函数的默认参数一、定义:c++允许在函数定义或函数声明时,为形参指定默认值。返回类型 函数名(类型 默认参数名=默认值){函数体}int add(int x=5,int y=6){ return x+y;}int main()add(10,20);//10+20add(10);//10+6add();//5+6return 0;1、如果在函数定义时设置了默认参数,那么就不能在函数声明中再次设置,反之亦然。int volume(int L,int W,int
2020-05-24 11:17:57
276
原创 C/C++学习——函数的定义
函数的定义一、函数定义的一般形式为:返回类型 函数名(形式参数列表){函数体声明部分函数体执行语句}1、函数名函数的名称,一般根据函数所实现的功能起名。2、形式参数列表形式参数列表是函数与调用者进行数据交换的途径吗,一般形式为:类型1 参数名1,类型2, 参数名2.。。。。int fun(int x,inty,double m){ return m>12.5?x:y;}3、函数可以没有形式参数,定义形式为:返回类型 函数名(){函数体声明部分函数体执行部
2020-05-23 22:01:06
3729
原创 C/C++学习——循环结构
while语句while语句的语法形式while(表达式) 语句;当表达式为真时,执行语句。否则执行下一条语句。#include <iostream>using namespace std;int main() { int n = 1, sum = 0; while (n <= 100) { sum = sum + n; n =n+1;//n+=1 } cout << sum << endl; getchar();//解决
2020-05-21 21:16:09
491
原创 C/C++学习——选择结构
if语句if形式:if(表达式) 语句1;if-else 形式:if (表达式) 语句1; else 语句2;注意:(1):if语句的表达式一般为关系、逻辑运算表达式,但也可以为其他表达式,但按逻辑值来理解:a=5,b=2;if(a) x=a*10;//等价于a!=0;switch语句switch(表达式){case 常量表达式1:语句序列1;break;case 常量表达式2:语句序列2;break;case 常量表达式3:语句序列3;break;default
2020-05-19 21:37:07
359
原创 C/C++学习——顺序结构
C/C++学习——顺序结构#include <iostream>using namespace std;/*使用标准命名空间*/int main()/*主函数*/{ cout<<"C++"<<endl; return 0;/*主函数正常返回值为0*/}
2020-05-19 20:44:34
335
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人