零碎知识集锦(一)

1.结构体的解释:
struct OLNode{
int i,j;
int e;
struct OLNode *right,*down;
}OLNode,*OLink;
C++这一过程定义了一个OLNode结构体,并生成了一个OLNode对象 和 一个OLNode对象指针,

2.scanf的返回值: scanf的返回值由后面的参数决定 ,scanf("%d%d", &a, &b); 如果a和b都被成功读入,那么scanf的返回值就是2 如果只有a被成功读入,返回值为1 如果a和b都未被成功读入,返回值为0 如果遇到错误或遇到end of file,返回值为EOF,且返回值为int型.

3.堆的定义:堆属于完全二叉树,但堆是有序的完全二叉树,在堆二叉树中,任意一个节点的关键字值都小于或大于它的子节点的关键字值。根节点最大的堆叫大顶堆,根节点最小的对叫小顶堆。

4.容器的定义:实质上就是一组相同类型对象的集合,但是它又不仅仅像数组那样简单,它实现了比数组更复杂的数据结构,当然也实现了比数组更强大的功能。C++ 标准模板库里提供了10 种通用的容器类,它基本上可以解决程序中遇到的大多数问题。在C++ 中容器被定义为:在数据存储上,有一种对象类型,它可以持有其它对象或指向其它对象的指针,这种对象类型就叫做容器。很简单,容器就是保存其它对象的对象,当然这是一个朴素的理解,这种“对象”还包含了一系列处理“其它对象”的方法,因为这些方法在程序的设计上会经常被用到,所以容器也体现了一个好处,就是“容器类是一种对特定代码重用问题的良好的解决方案”。
容器还有另一个特点是容器可以自行扩展。在解决问题时我们常常不知道我们需要存储多少个对象,也就是说我们不知道应该创建多大的内存空间来保存我们的对象。显然,数组在这一方面也力不从心。容器的优势就在这里,它不需要你预先告诉它你要存储多少对象,只要你创建一个容器对象,并合理的调用它所提供的方法,所有的处理细节将由容器来自身完成。它可以为你申请内存或释放内存,并且用最优的算法来执行您的命令。在现在几乎所有的面向对象的语言中也都伴随着一个容器集,在C++ 中,就是标准模板库(STL )。C++ 中处理容器是采用基于模板的方式。标准C++ 库中的容器提供了多种数据结构,这些数据结构可以与标准算法一起很好的工作,这为我们的软件开发提供了良好的支持!

5.顺序性容器:是一种各元素之间有顺序关系的线性表,是一种线性结构的可序群集。顺序性容器中的每个元素均有固定的位置,除非用删除或插入的操作改变这个位置。这个位置和元素本身无关,而和操作的时间和地点有关,顺序性容器不会根据元素的特点排序而是直接保存了元素操作时的逻辑顺序。比如我们一次性对一个顺序性容器追加三个元素,这三个元素在容器中的相对位置和追加时的逻辑次序是一致的。

6.关联式容器:和顺序性容器不一样,关联式容器是非线性的树结构,更准确的说是二叉树结构。各元素之间没有严格的物理上的顺序关系,也就是说元素在容器中并没有保存元素置入容器时的逻辑顺序。但是关联式容器提供了另一种根据元素特点排序的功能,这样迭代器就能根据元素的特点“顺序地”获取元素。
关联式容器另一个显著的特点是它是以键值的方式来保存数据,就是说它能把关键字和值关联起来保存,而顺序性容器只能保存一种(可以认为它只保存关键字,也可以认为它只保存值)。这在下面具体的容器类中可以说明这一点。

7.容器适配器:是一个比较抽象的概念, C++ 的解释是:适配器是使一事物的行为类似于另一事物的行为的一种机制。容器适配器是让一种已存在的容器类型采用另一种不同的抽象类型的工作方式来实现的一种机制。其实仅是发生了接口转换。那么你可以把它理解为容器的容器,它实质还是一个容器,只是他不依赖于具体的标准容器类型,可以理解是容器的模版。或者把它理解为容器的接口,而适配器具体采用哪种容器类型去实现,在定义适配器的时候可以由你决定。
下表列出STL 定义的三类容器所包含的具体容器类:
在这里插入图片描述
https://blog.csdn.net/acosoft/article/details/4418270#comments

8.迭代器简介
除了使用下标来访问 vector对象的元素外,标准库还提供了另一种检测元素的方法:使用迭代器(iterator)。迭代器是一种允许程序员检查容器内元素,并实现元素遍历的数据类型
标准库为每一种标准容器(包括vector)都定义了一种迭代器。迭代器类型提供了比下标操作更一般化的方法:所有的标准库容器都定义了相应的迭代器类型,而只有少数的容器支持下标操作。由于迭代器对所有的容器都适用,现代C++程序更倾向于使用迭代器而不是下标操作访问容器元素,即使对支持下标操作的vector类型也这样。https://www.cnblogs.com/hdk1993/p/4419779.html
http://blog.sina.com.cn

9.左值右值的定义
左值与右值这两概念是从 c 中传承而来的,在 c 中,左值指的是既能够出现在等号左边也能出现在等号右边的变量(或表达式),右值指的则是只能出现在等号右边的变量(或表达式).https://www.cnblogs.com/catch/p/3500678.html

2018/12/17总结:
说说个人感受吧,可能和小时候的经历有关,有一次,一个营销团队来我们学校宣传,卖的是十本国外经典故事集,叫什么名字我也没太大印象了,当时忐忑的跟爷爷说想买书,爷爷想都没想,直接问要多少钱,我很犹豫,因为当时199的确是一个不小的数字,我没想到,爷爷说,什么都可以不买,只有书,是肯定要买的。不得不承认,爷爷的话给予了我莫大的震撼,虽然到后来,我一度沉迷于小说,但是同时,受到学校的熏陶,自己也是楞生生的啃了几本名著,到现在,我人生的十字路口终于来了。
我发现自己可以沉的下心去看博客,看书,但是,Coding能力太差了,如果我只选择了理论这条路,无疑是和我的愿望相背离的,可是,我现在连做水题都很吃力,目前的解决办法是先照着学长的博客敲,然后缕清思路,自己一个函数一个函数的弄懂,多写几遍,应该会有不小的收获。促使我做出这样的抉择的原因是,马克思的实践论,只有自己有了编写代码的能力,才能知道自己的结果对不对,另外,我其实也不太确定我选择的路对不对,一路走来,我几乎很少做题,这对于一个工科生来说无疑是致命的缺陷,学校的培养方案是培养出一些代码能力强的程序员或者工程师,在我的能力雷达图种,我的文档能力应该算是不错,但是,不能使用武器而只知道武器原理绝非是我所期待的,我的阅读能力目前处于中上水平,在接下来的学习中,除了巩固这种能力,我还应该着重发展我的Coding能力,就让我看看,我能做到什么程度吧。

猜你喜欢

转载自blog.csdn.net/weixin_43227938/article/details/85039799