C++算法
无边界ROS2
精通python、c语言、c++,研究ROS1、ROS2.
展开
-
C++中的多态
虚函数和纯虚函数:在基类num_1中定义了两个纯虚函数addition()和lose_weight(),派生类num_2必须实现这两个函数。多态:通过使用基类指针指向派生类对象实现多态,可以调用基类的纯虚函数,根据指针指向的派生类对象的实际类型来调用对应的函数实现。重载箭头运算符:在num_3类中重载了箭头运算符->,使得可以直接通过智能指针对象调用num_1类的成员函数。智能指针:num_3类作为一个智能指针类,持有一个num_1类型的指针,并在析构函数中释放该指针的内存。原创 2024-06-28 16:53:33 · 191 阅读 · 0 评论 -
C++单例模式
单例模式只要是利用了static的特性,类内声明类外实现,并使用共有的静态函数返回已经固定好的对像地址,实现了对像的单一性。C++单例模式是一种设计模式,确保一个类只有一个实例,并提供一个全局访问点。原创 2024-06-28 16:41:53 · 200 阅读 · 0 评论 -
C++实现设计圆形类,求面积πr²
在以上代码中,我们创建了一个名为Circle的类,并定义了setRadius和getArea两个方法。setRadius用于设置圆的半径,getArea用于计算圆的面积。在主函数中,我们通过用户输入的半径创建了一个Circle对象,并调用setRadius方法设置半径,最后调用getArea方法计算面积并输出结果。面向对象的设计思想是将事物抽象为对象,对象由属性和方法组成。对于圆形对象,属性可以是半径(r),方法可以是计算面积的函数。概念: 在C++中,可以使用类来实现圆形对象。原创 2024-06-28 16:33:40 · 190 阅读 · 0 评论 -
C++实现函数的重载
C++中,可以通过函数重载来实现函数的多态性。函数重载指的是在同一作用域内定义多个同名函数,但参数列表不同。这样,在调用函数时,根据传入的参数类型和个数,编译器能够自动选择匹配的函数进行调用,实现不同的功能。这样能够提高代码的可读性和灵活性。这里程序通过形参内不同的类型和不同的个数来判断重载。原创 2024-06-28 16:31:09 · 141 阅读 · 0 评论 -
C语言中,通过引用传函数形参
C语言中,通过引用传递函数形参,可以直接修改实参的值,提高代码的效率和灵活性。我上面通过传两个引用的形参,达到可以直接修改的目的。原创 2024-06-28 16:24:13 · 158 阅读 · 0 评论 -
C++中常用集合算法
return 目标容器的最后一个元素的迭代器地址。@return 目标容器的最后一个元素的迭代器地址。@return 目标容器的最后一个元素的迭代器地址。@param dest 目标容器开始迭代器。@param dest 目标容器开始迭代器。@param dest 目标容器开始迭代器。@param beg1 容器1开始迭代器。@param beg2 容器2开始迭代器。@param beg1 容器1开始迭代器。@param beg2 容器2开始迭代器。@param beg1 容器1开始迭代器。原创 2024-06-25 15:50:35 · 680 阅读 · 0 评论 -
C++中常用算数生成算法
accumulate算法 计算容器元素累计总和。@param beg 容器开始迭代器。@param end 容器结束迭代器。@param beg 容器开始迭代器。@param end 容器结束迭代器。@param value t填充元素。@param value累加值。fill算法 向容器中添加元素。原创 2024-06-25 15:06:41 · 157 阅读 · 0 评论 -
C++中常用拷贝和替换算法
C++中常用拷贝和替换算法replace:代码如下:replace_if:代码如下:swap:代码如下:原创 2024-06-25 14:34:16 · 143 阅读 · 0 评论 -
C++中常用排序算法
merge:Merge是一种合并操作,将两个或多个相同或不同的数据集合并成一个。原创 2024-06-25 14:05:04 · 149 阅读 · 0 评论 -
C++中常用查找算法
上面因为自定义类型里面的值有不同的组合,所以需要重载 == ,而且重载内传入的形参需要加上const。我在代码定义了两个类num_1和num_2,其中num_1类有两个成员变量name和age,并且重载了==运算符用于比较两个num_1对象是否相等。num_2类继承自binary_function类,并且重载了()运算符用于比较两个num_1指针是否相等。在main函数中,创建了四个num_1对象,并将其指针存入vector容器v中。原创 2024-06-25 11:34:19 · 248 阅读 · 0 评论 -
C++用遍历算法
算法主要是由头文件 组成。是所有STL头文件中最大的一个,其中常用的功能涉及到比较,交换,查找,遍历,复制,修改,反转,排序,合并等...体积很小,只包括在几个序列容器上进行的简单运算的模板函数. 定义了一些模板类,用以声明函数对象。原创 2024-06-25 09:57:24 · 401 阅读 · 0 评论 -
自定义类适配器
接下来,使用for_each和适配器函数mem_fun_ref调用num_1类的成员函数ss打印姓名和年龄,并使用成员函数addAge增加每个对象的年龄。在主函数中,创建了一个存储num_1对象的vector,并向其中添加了三个num_1对象。然后,使用for_each和适配器函数num_2,打印每个num_1对象的姓名和年龄。适配器函数mem_fun_ref是一个成员函数适配器,用于调用num_1类的成员函数ss和addAge。适配器函数num_2是一个回调函数,用于打印每个num_1对象的姓名和年龄。原创 2024-06-24 17:09:29 · 163 阅读 · 0 评论 -
内建函数对象
接下来,使用for_each算法,遍历v1中的所有元素,并将每个元素分别传递给num_1函数对象作为第一个参数,而num作为第二个参数进行绑定。分为:算数类函数对象,关系运算类函数对象,逻辑运算类仿函数。这些仿函数所产生的对象,用法和一般函数完全相同,当然我们还可以产生无名的临时对象来履行函数功能。要注意的是,在num_1类中,我们继承了binary_function模板类,并且指定了参数类型和返回值类型。总结一下,函数对象适配器bind2nd可以用来绑定一个参数,并将这个参数传递给函数对象的第二个参数。原创 2024-06-24 15:50:36 · 141 阅读 · 0 评论 -
函数适配器
具体来说,代码首先创建了一个vector v1,并用for循环将0到9的整数依次添加到v1中。然后,代码使用for_each函数对v1中的每个元素应用bind2nd(ptr_fun(num_1),100)。这里,bind2nd将函数指针num_1适配为一个一元函数对象,固定了第二个参数为100。最后,代码输出了每个元素与100相加的结果。总结一下,这段代码主要展示了将函数指针适配为函数对象的方法,使用了bind2nd函数和ptr_fun函数进行适配,并使用for_each函数对容器中的元素进行操作。原创 2024-06-24 16:45:27 · 218 阅读 · 0 评论 -
二元取反匹配器
在代码中,使用not1函数对bind2nd(greater(),5)进行取反操作,表示找到第一个不大于5的元素。find_if函数会返回第一个满足谓词条件的元素的迭代器,如果找不到则返回尾迭代器。此处取反后的谓词表示将元素按降序排列。for_each函数用于遍历容器中的元素,并对每个元素执行lambda表达式。总结:上面的代码展示了使用STL算法中的not1和not2函数来对一元和二元谓词进行取反操作的示例。我在代码利用STL算法中的not1和not2函数来实现对迭代器指向的元素进行取反的操作。原创 2024-06-24 16:32:00 · 149 阅读 · 0 评论 -
一元取反匹配器
我在代码涉及到了函数适配器和取反匹配器的知识点。其中,函数适配器是通过继承unary_function模板类来自定义一个函数对象类,定义了参数类型和返回值类型,并重载了()运算符。取反匹配器利用not1函数模板将一个一元谓词的结果取反,用于在算法中进行某些条件的取反判断。在上面的代码中,通过定义num_2类来实现一个一元谓词,判断一个数字是否大于5,然后利用not1函数模板将其取反,传入find_if算法中进行条件查找。如果找到了大于5的数字,则输出该数字,否则输出没有找到。原创 2024-06-24 15:59:14 · 162 阅读 · 0 评论 -
函数对象适配器
首先,在主函数中创建了一个vector v1,并填充了0到9的数字。接下来,使用for_each算法,遍历v1中的所有元素,并将每个元素分别传递给num_1函数对象作为第一个参数,而num作为第二个参数进行绑定。要注意的是,在num_1类中,我们继承了binary_function模板类,并且指定了参数类型和返回值类型。在operator()函数中,我们将传入的两个参数进行输出,并输出它们的和。总结一下,函数对象适配器bind2nd可以用来绑定一个参数,并将这个参数传递给函数对象的第二个参数。原创 2024-06-24 15:37:17 · 350 阅读 · 0 评论 -
C++中的谓词
在本例中,lambda表达式内部定义了一个匿名函数,功能与num_1函数相同,即打印元素。我在代码使用了一元谓词,即重载了()运算符的自定义类num_1作为find_if函数的参数。接下来使用for_each函数对排序后的vector容器进行遍历,其中第二个参数传入了一个函数指针num_1,表示使用该函数作为回调函数来处理每个元素。在main函数中,通过sort函数对vector容器v进行排序,第三个参数传入了一个匿名对象num_2(),表示使用该二元谓词对元素进行排序。,谓词可作为一个判断式。原创 2024-06-24 14:45:25 · 389 阅读 · 0 评论 -
函数对象(伪函数)
这样可以方便地创建可保存状态的函数对象,实现类似函数的功能。重载函数调用操作符的类,其对象常称为函数对象(function object),即它们是行为类似函数的对象,也叫仿函数(functor),其实就是重载“()”操作符,使得类对象可以像函数那样调用。分类:假定某个类有一个重载的operator(),而且重载的operator()要求获取一个参数,我们就将这个类称为。2.函数对象(仿函数)重载了”() ”操作符使得它可以像函数一样调用。1.函数对象(仿函数)是一个类,不是一个函数。原创 2024-06-24 11:47:20 · 142 阅读 · 0 评论