
C++
愚公搬程序
一切有为法,如梦幻泡影,如露亦如电,应作如是观。
展开
-
请使用C++编写代码,演示static关键字的不同用法
解释:在MyClass类中定义了静态成员变量count,在每个MyClass对象的构造函数和析构函数中对count进行自增和自减操作,并在printCount函数中输出count的值。static关键字可以用于修饰变量,使其成为静态变量,静态变量仅在编译时分配内存,不会在函数结束时被删除,可以在函数内部或外部声明和初始化,但不能被随意访问,只能被定义的函数访问。解释:函数static_fun被声明为静态函数,只能在main函数所在的.cpp文件中调用它,而fun函数则可以被其他文件中的函数调用。原创 2023-11-23 09:00:08 · 53 阅读 · 0 评论 -
C++递归、搜索与回溯算法
搜索算法是一种通过遍历所有可能的解来寻找问题解的算法。常见的搜索算法包括深度优先搜索(DFS)、广度优先搜索(BFS)、A*搜索等。递归算法是一种在函数内部调用自身的算法,一般用于解决一些分治的问题,例如二叉树的遍历、快速排序、归并排序等。回溯算法是一种穷举算法,通过不断地扩展可能的解来寻找问题解。常用于解决排列组合等问题。C++递归、搜索与回溯算法是一些常用的算法思路,可应用于各种问题,如排列组合、数学问题、图论问题等等。原创 2023-11-22 09:10:22 · 175 阅读 · 0 评论 -
C++ STL之list容器的模拟实现
以上就是list容器的模拟实现,实现了插入删除元素的基本功能,可以通过push_front、push_back、pop_front、pop_back等函数来操作链表。list是STL中为解决顺序容器的插入删除效率而设计的一种双向链表容器,下面我们来模拟实现一下list容器的基本功能。原创 2023-11-22 09:02:36 · 55 阅读 · 0 评论 -
C++-多态的实现及其底层原理
当通过基类指针或引用调用虚函数时,会根据这个指针找到虚函数表,然后调用相应的函数。C++中多态是基于虚函数来实现的。虚函数是一种特殊的成员函数,当成员函数被声明为虚函数时,它可以在派生类中被重新定义。总之,C++中的多态性是基于虚函数表实现的,通过调用虚函数来实现多态。通过基类指针或引用调用虚函数时,实际调用的是派生类中的同名函数,因为派生类中的函数重写了基类中的同名函数,这就实现了多态。析构函数必须是虚函数,否则在释放派生类对象时,只会调用基类的析构函数,而不会调用派生类的析构函数,导致内存泄漏。原创 2023-11-21 09:11:01 · 66 阅读 · 0 评论 -
C++-从0到1讲继承|复杂的菱形继承
虚继承还可以解决多态中的菱形继承问题,保证了正确的调用。为了解决菱形继承带来的问题,C++中提供了虚继承的概念。需要注意的是,虚继承虽然解决了菱形继承带来的问题,但也会带来额外的开销,因为子类需要在运行时查找虚基类子对象的位置。而复杂的继承关系可能会出现菱形继承的问题。菱形继承指的是在继承体系中存在两个派生类,它们共同继承了一个基类,而又有一个派生类同时继承了这两个派生类。总之,在使用继承时,应当理解虚继承的概念,并根据实际情况选择是否使用虚继承,以避免出现复杂的继承问题。原创 2023-11-21 09:11:49 · 64 阅读 · 0 评论 -
C++-STL使用仿函数控制优先级队列priority_queue
在上面的例子中,我们定义了一个自定义仿函数 Greater,用于按照元素大小倒序排序。在插入元素时,优先级队列根据 Greater 仿函数的规则进行排序,从而实现了按照元素大小倒序排列。STL中的优先级队列(priority_queue)可以使用仿函数(function object)来定义元素的比较规则,从而实现按照某种规则来排序。在STL中,优先级队列默认使用std::less(即小的元素在队列顶部)作为比较规则,但是也可以通过自定义仿函数来实现不同的排序方式。原创 2023-11-21 09:12:34 · 64 阅读 · 0 评论