数据结构
相互之间存在一种或多种特定关系的数据元素的集合。研究数据结构,关心的是数据对象的描述以及相关操作函数的实现。
数据
是描述客观事物的符号,是计算机中可以操作的对象,是能被计算机识别,并输入给计算机处理的符号集合。如整型、浮点型等数值类型,以及声音、图像等非数值类型。
数据元素
是组成数据的、具有一定意义的基本单位,在计算机中通常作为整体处理。也被称作记录。
5
章:实现26
:尽可能延后变量定义式的出现时间对于循环存在的情况:
做法A
:定义于循环外
1 | Widget w; |
做法B
:定义于循环内
1 | for(int i = 0; i < n; i++) |
这两种写法的成本如下:
做法A
:1
个构造函数 + 1
个析构函数 + n
个赋值操作
做法B
:n
个构造函数 + n
个析构函数
做法A
会造成名称w
的作用域比做法B
更大
除非(1)你知道赋值成本比构造 + 析构成本低,(2)你正在处理代码中效率高度敏感的部分,否则你应该使用做法B
。
1
章:让自己习惯C++
01
:视C++
为一个语言联邦C++
视为由4
个次语言组成的联邦:C
:没有模板、没有异常、没有重载…Object-Oriented C++
:类、封装、继承、多态、虚函数、动态绑定等等;Template C++
:泛型编程部分;STL
:是一个Template
程序库,容器、迭代器、算法以及函数对象。从某个此语言切换到另一个时,高效编程守则可能会发生变化。比如,C-like
类型(内置类型)pass by value
更好;对于Object-Oriented C++
而言,pass by reference to-const
更好;再切换到STL
,由于迭代器和函数对象都是在C
指针之上塑造出来的,pass by value
守则再次适用。