cpp语言
文章平均质量分 59
主要关注cpp语言,包括和人工智能图像算法相关的知识学习
Kun Li
自古山高水远路,无一不为风尘苦。
展开
-
VideoRender和ImageRender等项目中的一些c++知识点
1 引入inline关键字的原因在c/c++中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了inline修饰符,表示为内联函数,栈空间就是指放置程序的局部数据(也就是函数内数据)的内存空间。在系统下,栈空间是有限的,假如频繁大量的使用就会造成因栈空间不足而导致程序出错的问题,如,函数的死循环递归调用的最终结果就是导致栈内存空间枯竭。关于结构体内嵌比较函数: 一般情况下: 直接写比较函数是裸的r表示当前的值,如果r原创 2022-12-30 15:26:43 · 935 阅读 · 0 评论 -
VideoRender和ImageRender项目中遇到的一些cpp错误
在用vs写项目,或者你下载github上的C++代码的时候,是不是经常遇到由于找不到xxx.dll,无法继续执行代码的问题,其实很简单,解决方法如下:首先,对应于不同的运行模式,debug和release,方法都是一样的,找到你项目目录下 项目名称/x64 下的两个文件夹debug和release然后,找到你安装的库的文件夹,这里以pcl1.11.1这个库来举例,打开其中的bin目录,你会找到很多.dll文件,这些就包含你缺少的.dll文件,比如pcl_common.dll,pcl_commond。原创 2022-12-15 17:04:56 · 2924 阅读 · 0 评论 -
cpp中的内联函数
编译过程的最终产品是可执行程序 — 由一组机器语言指令组成。运行程序时,操作系统将这些指令载入到计算机内存中,因此每条指令都有特定的内存地址,计算机随后将逐步执行这些指令。有时(如有循环或分支语句时),将跳过一些指令,向前或向后跳到特定地址,常规函数调用也使程序调到另一个地址(函数的地址),并在函数结束时返回。下面更详细的介绍这一过程的典型实现。执行到函数调用指令时,程序将在函数调用后立即存储该指令的内存地址,并将函数参数复制到堆栈(为此保留的内存块),跳到标记函数起点的内存单元,执行函数代...原创 2022-05-20 07:34:57 · 501 阅读 · 0 评论 -
cpp中函数指针
与数据项相似,函数也有地址。函数的地址是存储其机器语言代码的内存的开始地址。可以编写将另一个函数的地址作为参数的函数。这样第一个函数将能够找到第二个函数,并运行它。与直接调用另一个函数相比,这种方法很笨拙,但它允许在不同事件传递不同函数的地址,这意味着可以在不同的时间使用不同的函数。python中函数是一等公民,装饰器就是传函数。1.函数指针的基本知识假设要设计一个名为estimate()的函数,估算编写指定函数代码的时间,并且希望不同的程序员都将使用该函数。在py就...原创 2022-05-19 07:46:30 · 1744 阅读 · 0 评论 -
cpp中递归
cpp可以自己调自己,与C不同,cpp不允许main()调用自己,这种功能被称为递归。1.包含一个递归调用的递归如果递归函数调用自己,则被调用的函数也将调用自己,这将无限循环下去,除非代码中包含终止调用链的内容,通常的方法将递归调用放在if语句中,例如:void recurs(argumentlist){ statements1 if (test) recurs(arguments) statements2}#include <iost原创 2022-05-16 08:22:40 · 2349 阅读 · 0 评论 -
函数与array对象
在原创 2022-05-16 07:51:30 · 231 阅读 · 0 评论 -
函数和string对象
虽然C风格字符串和string对象的用途几乎相同,但与数组相比,string对象与结构的更相似,例如可以将一个结构赋给另一个结构买也可以讲一个对象赋给另一个对象。可以将结构作为完整的实体传递给函数,也可以将对象作为完整的实体进行传递。如果需要多个字符串,可以声明一个string对象数组,而不是二维char数组。#include <iostream>#include <string>using namespace std;const int SIZE = 5;void d原创 2022-05-13 08:12:49 · 124 阅读 · 0 评论 -
cpp中函数和结构
结构变量和数组一样,都可以存储多个数据项,但在涉及到函数时,结构变量的行为更接近于基本的单值变量。也就是说,与数组不同,结构将其数据组合成单个实体或数据对象,该实体被视为一个整体。可以将一个结构赋给另外一个结构,同样,也可以按值传递结构,就像普通变量那样。在这种情况下,函数将使用原始结构的副本。另外,函数也可以返回结构,与数组名就是数组第一个元素的地址不同的是,结构名只是结构的名称,要获得结构的地址,必须使用地址运算符&。在C/cpp中,都使用符号&来表示地址运算符,cpp还是用该运算符来表原创 2022-05-13 07:55:17 · 361 阅读 · 0 评论 -
函数和C-风格字符串
C风格字符串由一系列字符组成,以空值字符结尾。将字符串作为参数时意味着传递的是地址,但可以用const来禁止对字符串参数进行修改。1.将C风格字符串作为参数的函数假设要将字符串作为参数传递给函数,则表示字符串的方式有三种:char数组;用引号括起的字符串常量(也称字符串字面值);被设置为字符串的地址的char指针。但上述3种选择的类型都是char指针,准确的说是char*,因此可以将其作为字符串处理函数的参数:char ghost[15] = 'galloping';char* st原创 2022-05-12 07:36:34 · 2371 阅读 · 0 评论 -
cpp中函数和二维数组
为编写将二维数组作为参数的函数,则牢记,数组名被视为其地址,因此,相应的形参是一个指针,就像一维数组一样。int data[3][4] = {{1,2,3,4},{9,8,7,6},{2,4,6,8}};int total = sum(data,3);data是一个数组名,该数组有3个元素,第一个元素本身是一个数组,有4个int值组成,因此data的类型是指向由4个int组成的数组的指针。因此正确的原型如下:int sum(int (*ar2)[4],int size);其中的括号是必原创 2022-05-11 07:56:33 · 739 阅读 · 0 评论 -
cpp中函数和数组
1.函数如何使用指针来处理数组原创 2022-05-10 08:30:09 · 766 阅读 · 0 评论 -
cpp中函数参数和按值传递
cpp通常按值传递参数,这意味着将数值参数传递给函数,而后者将其赋给一个新的变量。double cube(double x)double volume = cube(side) # side=5被调用时,该函数将创建一个新的名为x的double变量,并将其初始化为5,这样,cube()执行的操作将不会影响main中的数据,因为cube使用的是side的副本,而不是原来的数据。用于接收传递的变量被称为形参。传递给函数的值被称为实参。cpp标准使用参数argument来表示实参,使用参量parame原创 2022-03-21 21:57:51 · 899 阅读 · 0 评论 -
cpp中的函数模块
1.定义函数函数可以分为两类,没有返回值的函数和有返回值的函数,没有返回值的函数被称为void函数,其通用格式如下:void functionName(parameterlist){ statement(s) return;}有返回值的函数:typeName functionName(parameterlist){ statements return value; }返回值的函数,必须使用返回语句,以便将值返回给调用函数。值本身可以是常量原创 2022-03-21 21:44:41 · 891 阅读 · 0 评论 -
cpp中数组的替代品vector
1.模板类vector模板类vector类似于string类,也是一种动态数组,可以在运行阶段设置vector对象的长度,可在末尾附加新数据,还可在中间插入新数据,基本上,它是使用new创建动态数组的替代品,实际上,vector类确实使用new和delete来管理内存,但这种工作是自动完成的。要使用vector对象,必须包含头文件vector,其次,vector包含在名称空间std中,可使用using编译指令,using声明或std::vector。第三,模板使用不同的语法来指出它存储的数据类型..原创 2022-03-15 21:37:49 · 495 阅读 · 0 评论 -
cpp中指针、数组和指针算法
指针和数组基本等价的原因在于指针算法和cpp内部处理数组的方式。原创 2022-03-15 20:19:50 · 1054 阅读 · 0 评论 -
cpp中指针和自由存储空间
计算机程序在存储数据时必须跟踪的3种基本属性,信息存储在何处,存储的值为多少,存储的信息是什么类型。定义一个简单变量,声明语句指出了值的类型和符号名,还让程序为值分配内存,并在内部跟踪该内存单元。指针是一个变量,其存储的是值的地址,而不是值本身。常规变量,只需对变量应用地址运算符&,就可以获得它的位置,使用常规变量时,值是指定的量,地址为派生量。1.指针与cpp基本原理 考虑为数组分配内存的情况,传统的方法是声明一个数组,要在cpp中声明数组,必须指定数组的长度...原创 2022-03-10 21:33:58 · 562 阅读 · 0 评论 -
cpp中枚举
cpp的enum工具提供了另一种创建符号常量的方式,这种方式可以代替const。它还允许定义新类型,使用enum的句法与使用结构相似。enum spectrum {red,orange,yellow,green};让spectrum成为该类型的名称,spectrum被称为枚举,将red,orange,yellow等作为符号常量,它们对应整数值0-7,这些常量叫做枚举量。在默认情况下,将整数值赋给枚举量,第一个枚举量的值为0,第二个枚举量的值为1,以此类推。可以使用赋值运算符来显式的设置枚举量的原创 2022-03-08 20:11:11 · 986 阅读 · 0 评论 -
cpp中共用体
共用体是一种数据格式,它能够存储不同的数据类型,但只能同时存储其中一种类型。也就是说,结构可以同时存储int、long和double,共用体只能存储int、long或double。共用体的句法与结构提相似,但含义不同。union one4all{ int int_val; long long_val; double double_val;}可以使用one4all变量来存储int、long或double,条件是在不同的时间进行:one4all pail...原创 2022-03-07 21:44:41 · 226 阅读 · 0 评论 -
cpp中的结构
虽然数组可以存储多个元素,但是所有元素类型必须相同,也就是说,一个数组可以存储20个int,另一个数组可以存储10个float,但同一个数组不能在一个元素中存储int,在另一些元素中存储float。cpp中的结构可以满足要求,结构是一种比数组更灵活的数据格式,因为同一个结构可以存储多种类型的数据。结构也是cpp OOP类的基石。结构是用户定义的类型,而结构声明定义了这种类型的数据属性,定义了类型后,便可以创建这种类型的变量,因此创建结构包括两步,首先,定义结构描述,它描述并标记了能够存储在数据中的各种数据类原创 2022-03-07 21:27:21 · 615 阅读 · 0 评论 -
cpp中string类
c++98通过添加string类扩展了cpp类,因此可以通过string类型的变量而不是字符数组来存储字符串,要使用string类,必须包含头文件string。string类定义隐藏了字符串的数组性质,能够像处理普通变量那样处理字符串。与使用数组相比,使用string对象更方便和安全,从理论上说,可以将char数组视为一组用于存储一个字符串的char存储单元,而string类变量是一个表示字符串的实体。1.cpp11 字符串初始化char first_date[] = {"le c...原创 2022-03-06 20:29:56 · 2769 阅读 · 0 评论 -
cpp中字符串
字符串是存储在内存的连续字节中的一系列字符,cpp中处理字符串的方式有两种,第一种来自C,第二种基于string。存储在连续字节中的一系列字符意味着可以将字符串存储在char数组中,其中每个字符都位于自己的数组元素中,字符串提供了一种存储文本信息的便捷方式,C字符串具有一种特殊的性质:以空字符串结束,空字符被写作\0,用来标记字符串的结尾。char dog[8] = {'b','e','a','u','x','','i','i'}char cat[8] = {'f','a','t',...原创 2022-02-27 22:38:01 · 1914 阅读 · 0 评论 -
cpp中数组
数组是一种数组格式, 能够存储多个同类型的值。例如,数组可以存储60个int类型的值、12个short或365个float值。每个值都存储一个独立的数组元素中,计算机在内存中依次存储数组的各个元素。要创建数组,可使用声明语句。数组声明应指出以下三点:1.存储在每个元素中的值的类型,2.数组名,3.数组中的元素。在cpp中,可以通过修改简单变量的声明,添加中括号(其中包括元素数目)来完成数组声明。例如,下面的声明创建一个名为months的数组,该数组有1...原创 2022-02-27 21:50:18 · 2581 阅读 · 0 评论 -
cpp11中的auto声明
cpp11新增了一个工具,让编译器能够根据初始值的类型推断变量的类型,在初始化声明中,如果使用关键字auto,而不制定变量的类型,编译器将把变量的类型设置成与初始值相同。原创 2022-02-27 17:35:01 · 462 阅读 · 0 评论 -
cpp 类型转换
cpp 丰富的类型允许根据不同的需求选择不同的类型,这也使计算机的操作更复杂。例如,将两个short值相加涉及到的硬件编译指令可能会与将两个long值相加不同。由于有11中整型和3种浮点类型,因此计算机需要处理大量不同的情况,尤其是对不同的类型进行运算时,为处理这种潜在的混乱,cpp自动执行很多类型转换:将一种算术类型的值赋给另一种算术类型的变量时,cpp将对值进行转换;表达式中包含不同的类型时,cpp将对值进行转换;将参数传递给函数时,cpp将对值进行转换;1.初始化和赋值...原创 2022-02-27 17:00:54 · 2000 阅读 · 0 评论 -
符号常量,const限定符
#define INT_MAX 32767在cpp编译过程中,首先将源代码传递给预处理器。在这里,#define和#include一样,也是一个预处理器编译指令。该编译指令告诉预处理器:在程序中查找INT_MAX,并将所有的INT_MAX都替换成32767。因此#define编译指令的工作方式与文本编辑器或字处理器中的全局搜索并替换命令相似。修改后的程序将在完成这些替换后被编译。预处理器查找独立的标记(单独的单词),跳过嵌入的单词。也就是说,预处理器不会将PINT_MAXTM替换为P3...原创 2022-02-13 14:51:28 · 534 阅读 · 0 评论 -
cpp 整型和浮点型
计算机内存的基本单元是位(bit),8位的内存块可以设置出256种不同的组合,8位单元可以表示0-255或者-128到127。字节(byte)通常指的是8位的内存单元,从这个意义上说,字节指的就是描述计算机内存量的度量单位,1KB等于1024字节,然而,cpp对于字节的定义与此不同,cpp字节由至少能够容纳实现的基本字符集的相邻位组成,也就是说,可能取值的数目必须等于或超过字符数目。有些语言只提供一种整型,而cpp则提供好几种,这样便能根据程序的具体要求选择最合适的整型。...原创 2022-02-13 14:07:05 · 1384 阅读 · 0 评论 -
C++ primer plus
https://github.com/lilinxiong/cppPrimerPlus-six-https://github.com/lilinxiong/cppPrimerPlus-six-最近在看C++ primer plus这本书,就顺着思路对其中的重点进行总结。在图像算法这块,cpp和python算是最核心的两种开发语言了,其实大部分时间下用的都是python,只有在比较耗时的操作上用cpp封一下so,相对来说,python要更加熟悉一下,但是日常开发中也有更加关注数据结构的优化等等。第二章原创 2022-02-10 20:34:21 · 4333 阅读 · 0 评论 -
cpp封装dll和so,cpp调用so
Linux的so文件到底是干嘛的?浅析Linux的动态链接库 - 知乎微信公众号:ilulaoshi,原文发表在我的个人网站:Linux的so文件到底是干嘛的?浅析Linux的动态链接库 上一篇我们分析了Hello World是如何编译的,即使一个非常简单的程序,也需要依赖C标准库和系统库,链接其实就…https://zhuanlan.zhihu.com/p/235551437(windows平台下)深入详解C++创建动态链接库DLL以及如何使用它(一) - 知乎前言:C以及C++的动态链接库和静态链接库,原创 2022-01-17 19:19:13 · 4233 阅读 · 0 评论 -
cmake,cpp编译,so
CMake 入门 - 知乎0. 序CMake 是一个跨平台的开源构建工具,使用 CMake 能够方便地管理依赖多个库的目录层次结构并生成 makefile 和使用 GNU make 来编译和连接程序。 1. 构建单个文件1.1 使用 GCC 编译假设现在我们希望编写一个函…https://zhuanlan.zhihu.com/p/149828002CMake实践应用专题 - 知乎介绍CMake工程应用实战经验。https://www.zhihu.com/column/c_136978137233324032原创 2022-01-14 16:46:36 · 2152 阅读 · 0 评论 -
cpp基础点
https://github.com/leeguandong/Cpp-0-1-Resourcehttps://github.com/leeguandong/Cpp-0-1-Resource1.数据类型整形,浮点型(float,double),字符型(char),字符串型(string),布尔类型2.程序流程结构顺序,选择(if/switch),循环(while,do while,for,break,continue,goto)3.数组一维数组,定义数组指定数据类型和数量int s原创 2022-01-13 19:11:43 · 639 阅读 · 0 评论