自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Robotics Library项目代码分析(3)项目的std一栏

在上一次分析源码中,我们先看了cmakefile文件,从这一行我们得知rl先从这里进行编译,那么我们来仔细看看这里到底说的什么。

2024-07-27 12:43:51 206

原创 Robotics Library项目代码分析(2)根目录的CMakefile

rl分析初步的cmakefile

2024-07-21 19:46:32 905

原创 Robotics Library项目代码分析(1)开始

这是一个关于Robotics Library项目源码解析的博客,我写这个博客的意义一部分在于督促我学习吸收怎么使用C++进行项目的开发和构建,一部分是因为我对于机器人或多或少有点感兴趣,一次偶然的机会看了一下这个项目的源代码,后面就萌生出想要进行源码分析的一个尝试。我从来没有接触过机器人学以及其相应的知识,有的只是一些大学期间学的不是很好的高等数学和一些薄弱的计算机基础,再加上一些C++的知识,这一个源码分析或许将是一个对我的极大挑战,我会尽量不断地更新博客。

2024-07-21 00:12:51 686

原创 C++模板元编程(4)-多态

通常我们说的多态是面向对象泛型编程,C++通过类继承和虚函数来支持多态,这里就是一般指所谓的动态多态性。而模板运行将不同的特定行为与单个泛型表示关联起来,通常在在编译时候进行处理,我们称之为静态多态性。由于历史原因,C++一开始只能通过使用继承和虚函数使用(动态)多态。

2024-05-09 09:21:42 424 1

原创 C++模板元编程(3)-编译期计算

C++可以让代码在编译期计算,即把计算任务放在编译期,C++98模板就可以使用编译期计算了,可以使用循环和执行路径选择,使用偏特化可以作为分支进行选择(类似于if),而如果使用SFINAE,则可以针对类型或者约束在函数模板中进行选择。而从C++11和C++14开始,C++对于模板元的增强,可以使用更加简洁的语言去实现上面的内容,包括(for循环和switch语句等)的constexpr特性,即for循环和switch也可以在编译期及加入计算。C++17增强了编译期的if语句,使其可以在模板外工作。

2024-05-07 20:57:38 995

原创 C++ 模板元编程(2)-可变参数

可变参数是指在函数或模板中可以接受任意数量的参数。在C++中,可变参数通常使用模板和递归的方式来实现,允许函数或模板处理不定数量的参数。例如,在C++标准库中自己实现的max函数,min函数等都是实现一个两个对象比较,但是如果我们想要自己实现多个参数呢?在模板元编程中可变参数也有很多作用。可变参数的作用是允许函数或模板处理不定数量的参数,从而实现更灵活的函数调用和模板实例化。这样可以简化代码,提高代码的复用性,并且能够处理各种不同数量的参数。我们首先看第一个例子。

2024-01-26 17:28:01 348 1

原创 C++ 模板元编程(1)-概念 concept

模板元编程(template metaprogramming)是一种利用 C++ 模板机制在编译期生成或修改代码的技术,它可以用来实现一些运行期无法完成的任务,或者提高运行期的效率。模板元编程是一种典型的元编程(metaprogramming)方式,即用代码来操作代码。我们使用了概念 IsOdd 来约束模板参数 T 必须是一个奇数,然后我们对模板函数 add 进行了特化,使得当两个参数都是奇数时,返回结果加一。这样,我们就实现了一种编译期的分支逻辑,根据不同的参数类型选择不同的函数实现。

2024-01-20 00:12:26 1376

原创 C++的指针

C++指针

2024-01-17 00:26:58 329

原创 C++的引用

但是const引用(const的左值引用)是可以使用右值进行初始化的,而且这里的右值不是临时销毁,C++编译器将这里的右值的声明周期提升到与其匹配的const引用同一个生命周期。通过在声明左值引用时使用const关键字,我们告诉左值引用将其引用的对象视为const。这样的引用称为const值的左值引用(也直接称为const引用)。另外Constexpr左值引用必须是全局或者静态局部的对象,这是因为编译器知道静态对象在内存中的实例化位置,因此它可以将该地址视为编译时常量。x可以修改值,ref不可以修改值。

2024-01-16 00:33:18 751 1

原创 C++非类型模板参数(Non-type template parameters)有什么用?以及如何实现

也就是你可以把一些程序的细节放在编译环节而不是运行环节,这带来的好处之一就是可以把错误放在编译期解决或者性能优化在编译期解决,C++现在在20标准之后越来越注重编译期解决安全错误,有点像Rust。非类型模板形参(Non-type template parameters)是具有固定类型的模板形参,用于作为模板实参传入的constexpr值的占位符。作为模板参数,而不是类型。这样,你可以在编译时确定一些代码的细节,而不是在运行时。这就是把5放到了编译期而不是运行期。而在很多细节方面,这是有很大差异的!

2024-01-14 23:58:10 1441

原创 C++ 具有多种模板类型的函数模板小问题

以上代码会报错,在函数调用max(2,2.5)中,传递了两种不同类型的参数:一个是整型,一个是双精度。因为我们在进行函数调用时没有使用尖括号来指定实际类型,编译器将首先查看max(int, double)是否存在非模板匹配。接下来,编译器将查看它是否可以找到一个函数模板匹配,然而,这也会失败,因为T只能表示一种类型。没有T的类型允许编译器将函数模板max<T>(T, T)实例化为具有两种不同参数类型的函数。函数模板中的两个形参都是类型T,所以它们必须解析为相同的实际类型。

2024-01-13 11:41:55 1182

原创 使用selenium获取有道翻译内容

调用youdao.send_keys()就可以获得英文翻译内容,使用selenium内部是调用了edge浏览器,性能占用比普通爬虫多。注意安装的版本要和自己Edge版本对应上。2、安装 selenium。

2024-01-12 13:23:58 544 1

原创 PowerShell命令行查询edge版本号

网上命令都是(Get-AppxPackage -Name Microsoft.MicrosoftEdge).Version。但是在我电脑上无反应,通过Get-AppxPackage -AllUsers查询所有软件后发现。目前edge有好几个版本,包括dev、测试版本,所以相应的的查询命令也要进行稍微修改。

2024-01-12 11:06:32 430

空空如也

空空如也

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

TA关注的人

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