C++
文章平均质量分 64
C++初阶和进阶
沉默....后....的...爆发.
它是站在海岸遥望海中已经看得见桅杆尖头了的一只航船,它是立于高山之巅远看东方已见光芒四射喷薄欲出的一轮朝日...
展开
-
vector的clear能清除其内存吗
然而,clear函数并不会立即释放向量所占用的内存。向量仍然会保留其已分配的内存,以备后续添加元素时使用。在C++中,std::vector的clear函数会移除向量中的所有元素,使得它的大小变为0。size和capacity是两个值,capacity才是实际内存的容量,size代表其大小。如果你想要立即释放内存,可以考虑使用交换技巧(swap trick)。原创 2023-09-12 10:56:15 · 1292 阅读 · 0 评论 -
priority_queue
可以给operator原创 2023-05-07 17:14:59 · 483 阅读 · 0 评论 -
stack和queue
平常使用的算式则是一种中缀表达式,如 ( 1 + 2 ) * ( 3 + 4 )。该算式的逆波兰表达式写法为 ( ( 1 2 + ) ( 3 4 + ) * )。逆波兰表达式是一种后缀表达式,所谓后缀就是指算符写在后面。queue:先进先出,队尾插入push,队头删除pop。stack:后进先出,只能在栈顶操作。提到栈,就不得不提及逆波兰表达式。原创 2023-05-07 13:59:07 · 55 阅读 · 0 评论 -
list容器
没有像vector总的capacity那些方法,因为链表的增效率是O(1),vector设置capacity是为了减少申请内存,扩容,提高效率,这一点list链表的数据结构是不必考虑的。但是pos要插入的位置,总头需要遍历才能获得,所以O(n),但是这样理解也不太合适,因为考虑算法的时间复杂度是针对算法本身,而不应去看参数的获取效率。list的erase删除操作会造成迭代器失效,不过这是这个位置的迭代器失效,不同于vector,因为它是链表,地址不是连续的。//不用给出迭代器位置,这是尾插头插,对应的。原创 2023-05-06 22:37:32 · 383 阅读 · 0 评论 -
vector
将容器当中的数据一个个拷贝过来时不能使用memcpy函数,当vector存储的数据是内置类型或无需进行深拷贝的自定义类型时,使用memcpy函数是没什么问题的,但当vector存储的数据是需要进行深拷贝的自定义类型时,使用memcpy函数的弊端就体现出来了。例如,当vector存储的数据是string类的时候。我理解的是,因为string类确定要存储的就是char,而vector容器类是根据模版参数来实例化容器类的,无法确定其类型,所以要使用对应的迭代器,迭代器是带有类型的指针,也只能这样处理。原创 2023-05-05 17:32:25 · 653 阅读 · 0 评论 -
string类
string可以说是使用起来很方便的一个类,也非常常用,较之于C字符串,可以说是string是很强大的,方法有很多,所以日常中药多加练习,才真正能够随心所用,并且string是stl容器其中一只,stl容器中很多类的方法都是比较相似的如:push_back,earse,find,[],begin,end,insert,当然针对不同的容器,还是有一些特有的方法。原创 2023-05-04 13:30:00 · 557 阅读 · 0 评论 -
二叉排序树
//BST:Binary Search Tree//根节点左子树 < 根 < 根节点右子树//对BST进行中序遍历得到升序序列#include<iostream>using namespace std;#include<vector>template < class T>class BSTNode{public: BSTNode(const T& data = T()) :_left(nullptr) , _right(n原创 2023-03-15 09:27:41 · 35 阅读 · 0 评论 -
模版初阶~
总结:函数模版特化要有原始泛型版本,模板类要在中显式给出类型,必须给出,对于成员函数实现参数尽量都带上const,能用引用就用引用,一些成员函数和运算符重载要给出const对象版本和非const两个都要实现。告诉编译器一个模子,让编译器根据不同的类型利用该模子来生成代码。类模版必须显式实例化。原创 2023-03-05 16:03:59 · 37 阅读 · 0 评论 -
C++入门
效果类似与宏函数,不过inline是函数会对函数安全性检查,不过如果程序中大量使用inline会使得编译展开后的源文件庞大,增加内存消耗,减少调用增加内存消耗,一种用空间换时间的想法。声明或定义时为函数的参数指定一个缺省值,(注意这里的或,是异或,不可以&,是二选一)在调用该函数时,如果没有指定参数则采用该形参的缺省值。定义命名空间,需要使用到namespace关键字,后面跟命名空间的名字,然后接一对{}即可,{}中即为命名空间的成员。不使用using,则在要使用时,空间名::成员名;原创 2022-11-07 13:36:50 · 1763 阅读 · 0 评论 -
C++类和对象
1.声明定义全部放在类中2.类中只做声明,定义放在类外,用 ClassName::function(){}定义(推荐这一种,类起到封装的作用,不必展示函数实现细节,只要提供接口函数)C++中struct和class是等价的,不过struct默认访问权限为public(兼容C语言),类中默认权限为private面向对象程序设计三大特性:封装 、 继承 、 多态封装:将数据和操作数据的方法记性有机结合,隐藏对象属性和实现细节(private),仅对外公开接口来和对象进行交互(public)原创 2022-11-20 13:40:14 · 352 阅读 · 0 评论 -
C++运算符重载(日期类全实现)
【代码】日期类全实现。原创 2022-11-20 16:56:13 · 89 阅读 · 0 评论