- 博客(9)
- 收藏
- 关注
原创 C++|常见知识点归纳
C++常见面试题试着归纳一下哈哈,有错误的地方欢迎指出来。1 C++11新特性 nullptr,智能指针,auto跟decltype,for循环按区间迭代,继承构造(using A::A;),unordered_map跟unordered_set,array数组等。2 auto跟decltype的使用(auto跟decltype的区别) auto关键字,就是让编译器根据初始化来推断它的数据类型。 decltype关键字,也是让编译器来推断,但它不需要初始化,但需要提供一个东西或
2021-08-02 00:50:07 268 1
原创 C++|谈谈继承跟组合
谈谈继承跟组合(成员对象)这回事在这里举个例子,由链表做一个栈。class MyList;其成员函数有:void insert(int data, int position);//按位置插入void delete_position(int position);//按位置删除int get_size();//获得当前链表长度int get_data(int position);//获得位置的值void print(bool seq);//打印链表,seq为true时正序打印,false时倒序
2021-08-02 00:47:14 227
原创 C++|谈谈这个weak_ptr
谈谈这个weak_ptr参加面试的时候面试官让我讲讲对C++智能指针的认识。其中我对shared_ptr跟unique_ptr两个还好,因为使用比较熟悉,原理跟实现上都还可以,但是对weak_ptr没具体使用过,只记得它的概念,所以回答得不好。所以就整理一下这个weak_pt的使用。有一句话说的很好,“weak_ptr就像观测者那样观测资源的使用情况”。首先,weak_ptr是配合shared_ptr的使用,weak_ptr可以用shared_ptr来赋值,但当它引用shared_ptr时并不会引起它
2021-08-02 00:46:35 718
原创 C++|迭代器失效问题
谈谈迭代器失效问题我们先来看看一个很经典的问题。//在一个vector<int> vc中,删除所有target元素void func1(vector<int>& vc, int target) { for (auto it = vc.begin(); it != vc.end(); it++) { if (*it == target) { it = vc.erase(it); } }}int main() { vector<int>
2021-08-02 00:45:38 956
原创 小谈“面向对象”与“面向过程”:小游戏贪吃蛇(C/C++)
说起“面向对象”今天刚好有个兄弟问起关于“面向对象”这东西,也凑巧今儿是周日有空,就来这里小小分享一下个人感悟。(有什么不对的地方,请一定要指出来,这样才能进步嘛哈哈哈哈~)“对象”说到“面向对象”,那肯定得先从“对象”说起。何为对象,答曰“万物皆可对象”。“对象”说白了就是一个实体,一个人、一只小鸡、一条蛇等,总之你能指出来的,都能作为对象。在这里我们以人为“对象”,则有:人有年龄、身高、体重等属性,人会吃饭、会走路、会睡觉、会工作等动作…那我们就可以定义成一个类,如下:class people
2020-10-11 18:38:12 1251
原创 (数据结构与算法)哈夫曼编码计算方法(两种实现方法)
哈夫曼编码本来是想着慢慢找时间按顺序补上这些数据结构的内容,但前几天有朋友找我写一个计算出哈夫曼编码的程序(课程作业吧,好像~哈哈哈),所以就先把哈夫曼树的东西写下来。先来介绍一下哈夫曼编码吧哈夫曼树,二叉树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。哈夫曼编码则是根据字符出现频率(权重分布),用最少的位数来表示。(字符出现多的,用较短编码;字符出现少的,用较长编码)。举个例子:好比这个字符
2020-09-29 22:43:48 15329
原创 (数据结构与算法)经典线性表(链表实现)
线性表(顺序表和链表)(有一个大神朋友跟我说,学数据结构,就得自己动手写出这是什么,用程序做出它是怎么做的)我们接触的数据结构有:线性结构和非线性结构。我们常见到的线性结构:线性表、栈、队列今天我们来看看这个一直说到的线性表。关于线性表定义:线性表是具有相同数据类型的n(n>=0)个数据元素的有限序列。(n为表长,n=0时线性表是一个空表)特点:①元素个数有限;②具有逻辑上的顺序性,元素有先后次序之分;③除表头元素外,每个元素有且仅有一个直接前驱;④除表尾元素外,每个元素有且仅有一个直接
2020-09-26 23:05:38 183
原创 (数据结构与算法)经典排序算法
六个经典排序算法重新学习《数据结构与算法》,所以也抽空理一理这些经典排序算法。今天就说说这几种常见的经典排序算法:冒泡排序、选择排序、插入排序希尔排序、快速排序、计数排序(以升序为例)冒泡排序基本原理:对两个相邻的元素进行比较,如果第一个比第二个大则两者交换。同样的操作下,遍历整个数组,则将最大值置于末尾。同样的道理,只需要对每一个元素都遍历一遍,则能依次将最大值置于(该次遍历的)末位。(因为最小的值慢慢“浮”到最上面,所以称为:冒泡)时间复杂度:O(n²)空间复杂度:O(1)排
2020-08-19 18:38:15 233
原创 (数据结构与算法)理解排序稳定性
关于冒泡排序跟选择排序的稳定性比较重新翻学一些简单经典排序算法,看到了以前考试复习划的重点 “冒泡排序、插入排序是稳定排序,选择排序是不稳定排序 ”,当时没去认真想明白这是什么意思,现在重新学就来好好理解一下哈哈哈哈。有什么不对的,欢迎评论区指正。有关排序的稳定性我们通常说,冒泡排序稳定,选择排序不稳定,插入排序稳定,快速排序不稳定…那它的“稳定”与“不稳定”体现在哪里呢。定义里说:在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,r[i
2020-08-14 20:19:47 845 1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人