|
@@ -27,7 +27,7 @@ summary = "Discuss minor performance issues introduced by array initialization i
|
|
|
## “自动”初始化
|
|
|
|
|
|
根据[标准](/assets/std/cpp-n4659.pdf) (第 6.6.2 节) 规定,
|
|
|
-具有静态存储期的对象会被初始化为 0。换句话说,
|
|
|
+具有静态存储期的无构造函数对象会被默认初始化为 0。换句话说,
|
|
|
如果我们想要把某个数组初始化为 0,只要在全局声明它即可。例如:
|
|
|
|
|
|
```c++
|
|
@@ -274,8 +274,8 @@ int main() {}
|
|
|
故结果与之前的测量结果没有可比性。
|
|
|
|
|
|
对于一些 OI 题目来说,这种行为会导致总的运行时间显著增加。例如,
|
|
|
-如果某题目规定对于 $100%$ 的数据有 $1 \leq n \leq 10^6$,
|
|
|
-而对于 $50%$ 的数据有 $1 \leq n \leq 1000$,那么加了构造函数后,
|
|
|
+如果某题目规定对于 $100\\%$ 的数据有 $1 \leq n \leq 10^6$,
|
|
|
+而对于 $50\\%$ 的数据有 $1 \leq n \leq 1000$,那么加了构造函数后,
|
|
|
即使对于 $n$ 较小的数据,程序在启动时也会初始化 $10^6$ 个元素。
|
|
|
而不加构造函数的程序实际上只会初始化 $1000$ 个元素。
|
|
|
洛谷等评测系统会将多组数据的运行时间叠加起来,作为总运行时间,
|