2018/11/1 学习笔记
- 循环语句
C++循环语句中,for 语句使用频率最高,while 语句其次,do 语句很少用。提高循环体效率的基本办法是降低循环体的复杂性。
- 在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的 循环放在最外层,以减少 CPU 跨切循环层的次数。
- 如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到 循环体的外面。这样才不会老是打断循环,使得编译器不能对循环进行优化处理,降低了效率。
当N很大的时候,2法好,效率高
N小的时候,1法好,简洁易懂
1.
for (i=0; i<N; i++)
{
if (condition)
DoSomething();
else
DoOtherthing();
}
2.
if (condition)
{
for(i=0;i<N;i++)
DoSomething();
}
else
{
for(i=0; i<N; i++)
DoOtherthing();
}
- const与#define比较
#define MAX 100 //宏常量
const int MAX = 100; // C++ 语言的 const 常量
const 常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而对后者只进行字符替换,没有类型安全检查,并且在字符替换可能会产生意料不到的错误(边际效应)。
不能在类声明中初始化 const 数据成员。const 数据成员的初始化只能在类构造函数的初始化表中进行。
class A
{…
A(int size); // 构造函数
const int SIZE ; //不能赋值
};
A::A(int size) : SIZE(size) // 构造函数的初始化表
{
…
}
A a(100); // 对象 a 的 SIZE 值为 100
A b(200); // 对象 b 的 SIZE 值为 200
建立在整个类中都恒定的常量,不能用 const 数据成员,应该用类中的枚举常量来实现。(它的隐含数据类型是整数,其最大值有限,且不能表示浮点数)
class A
{…
enum
{
SIZE1 = 100, // 枚举常量
SIZE2 = 200
};
int array1[SIZE1];
int array2[SIZE2];
};