除錯模板的重要
這是一篇很短的廢文。
當你發現你寫出的程式有 bug 的時候,就會是你花上很多時間的時候。
尤其是在打 OI 的情況下,付出一點點時間讓 debug 變更簡單是有必要的。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
| // An AC a day keeps the doctor away.
#pragma GCC optimize("Ofast")
#include <bits/stdc++.h>
#ifdef local
#define safe std::cerr<<__PRETTY_FUNCTION__<<" line "<<__LINE__<<" safe\n"
#define debug(args...) qqbx(#args, args)
#define orange(args...) danb(#args, args)
using std::cerr;
template <typename ...T> void qqbx(const char *s, T ...args) {
int cnt = sizeof...(T);
((cerr << "\e[1;32m(" << s << ") = ("), ...,
(cerr << args << (--cnt ? ", " : ")\e[0m\n")));
}
template <typename T> void danb(const char *s, T L, T R) {
cerr << "\e[1;32m[ " << s << " ] = [ ";
for (int f = 0; L != R; ++L) cerr << (f++ ? ", " : "") << *L;
cerr << " ]\e[0m\n";
}
#else
#define safe ((void)0)
#define debug(...) ((void)0)
#define orange(...) ((void)0)
#endif // local
#define all(v) begin(v),end(v)
using namespace std;
signed main() {
ios_base::sync_with_stdio(0), cin.tie(0);
int a[] = {3, 6, 9};
vector<int> b;
orange(all(a));
orange(all(b));
debug(1, 2, 3);
}
|
利用 C++17 的 fold expression 可以讓 code 變得超級短。 "\e[1;32m"
是代表綠色的代碼,可能在 windows 上不能用。當然,GDB 等等也是一個選擇,自己習慣最重要。
其實我只是想說,orange
= output range
這個命名比 pary
好多了 XD
昨天好幸福 嘻嘻