acm的一些头文件和调试代码

  个人觉得单步调试麻烦且费时间,所以我两年时间里F4+watch基本没怎么用过,但由于"查看变量的值"这个需求总是存在的,并且调试时通常需要显示很多东西,printf写起来又比较蛋疼,恰巧在c++11上知道了可变参数模板这个新的东西,于是果断拿过来写debug代码了。

本地调试时用的,写在头文件里,然后只在本地包含它,OJ上忽略。[local.h] =>

 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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#ifndef _local
#define _local
namespace Debug {
    void print() {
        cout << endl;
    }
    template<typename T>
    void print(const T t) {
        cout << t << endl;
    }
    template<typename F, typename...R>
    void print(const F f, const R...r) {
        cout << f << " ";
        print(r...);
    }
    template<typename T>
    void print(T*p, T*q) {
        int d = p < q ? 1 : -1;
        while(p != q) {
            cout << *p << ", ";
            p += d;
        }
        cout << endl;
    }
    template<typename T1, typename T2>
    void print(pair<T1, T2> x) {
        print("first = \"", x.first, "\" second = \"", x.second, "\"");
    }
}

class Timer {
private:
    clock_t _start;
    clock_t _end;

public:
    Timer() { start(); }
    void start() {
        _start = clock();
    }
    double get() {
        _end = clock();
        double usedtime = double(_end - _start) / CLK_TCK;
        cout << "used time: " <<  usedtime << " s\n";
        return usedtime;
    }
};

#endif

头文件等=>

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <bits/stdc++.h>
using namespace std;
#ifndef ONLINE_JUDGE
    #include "local.h"
#endif
#define X first
#define Y second
#define pb(x) push_back(x)
#define mp(x, y) make_pair(x, y)
#define all(a) (a).begin(), (a).end()
#define mset(a, x) memset(a, x, sizeof(a))
#define mcpy(a, b) memcpy(a, b, sizeof(a))
typedef long long ll;
template<typename T>bool umax(T&a, const T&b){return b<=a?false:(a=b,true);}
template<typename T>bool umin(T&a, const T&b){return b>=a?false:(a=b,true);}

int main() {
#ifndef ONLINE_JUDGE
    freopen("in.txt", "r", stdin);
    //freopen("out.txt", "w", stdout);
#endif // ONLINE_JUDGE

    return 0;
}

结果:

时间: 2024-11-05 22:35:34

acm的一些头文件和调试代码的相关文章

C预编译, 预处理, C/C++头文件, 编译控制,

在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#pragma指令对每个编译器给出了一个方法,在保持与C和C++语言完全兼容的情况下,给出主机或操作系统专有的特征.依据定义,编译指示是机器或操作系统专有的,且对于每个编译器都是不同的. 其格式一般为: #Pragma Para 其中Para 为参数,下面来看一些常用的参数. (1)message 参数. Message 参数是我最喜欢的一个参数,它能够在编译信息输出窗口中输

C/C++编程 头文件与源文件中的内容

从规模较小的程序转到比较复杂的程序,头文件与源文件中的内容组织困扰了很久,特别是头文件中该放哪些内容,到处搜索文章并进行了一次总结,如果有什么错误或者值得商榷的地方,希望大家能够不吝赐教. 引入问题: 编译模式:一个程序的源代码,可以放到不同的文件进行存放,每一个源文件都是独立的,可以分别进行编译,生成程序的时候只需要将各个目标程序进行一次连接便可以了.比如在一个文件中定义了一个函数 void a(),而另外一个文件中只有void a()的声明,如此并不影响把这个文件编译成目标文件,当一个文件中

GoogleCpp风格指南 1)头文件 2)作用域

Google开源项目风格指南 v3.133 原作: Benjy Weinberger, Craig Silverstein, Gergory Eitzmann, Mark Mentovai, Tashana Landray 翻译: YuleFox, brantyoung 修改: YCR 0 扉页 0.1 译者前言 Google经常发布一些开源项目, 因此发布这份编程风格, 使所有提交代码的人能获知Google的编程风格; 规则的作用是避免混乱, 但规则本身要权威, 有说服力, 并且是理性的, 大

c语言头文件和源文件不在同一个目录

http://www.cnblogs.com/ShaneZhang/archive/2013/05/20/3088688.html 从工程上讲,头文件的文件名应该与对应的源文件名相同便于维护,如果头文件中包含了多个源文件中的定义或声明,则应该按源文件分组布局头文件中的代码,并且通过注释注明每组所在的源文件.当一个工程的文件较多时应该将源文件与头文件分开目录存放,一般头文件存放在include或inc目录下,而源文件存放在source或src目录下,根据经验,一个工程的文件数超过30个时应该将源文

C/C++编程规范——头文件

在选择编程规范时,我首选google,其次是华为与微软,最后根据自身的一些实际情况进行调整.以下内容摘自google的c/c++编程规范.--------------------------通常,每一个.cc 文件(C++的源文件)都有一个对应的.h 文件(头文件),也有一些例外,如单元测试代码和只包含 main()的.cc 文件.正确使用头文件可令代码在可读性.文件大小和性能上大为改观.下面的规则将引导你规避使用头文件时的各种麻烦. 1. #define 的保护所有头文件都应该使用#defin

c++关于multiset的头文件包含问题

最近在Bilibili上看到不少侯捷老师C++的视频教程,侯捷老师翻译了很多C++的经典书籍,比如<Essential C++中文版>.<STL源码剖析>,也写了<深入浅出MFC 第二版>.使用到multiset这个关联容器时,本来以为Visual Studio2017中会提供#include <multiset>这个头文件,没想到加入到显示错误,后来查了下资料,说是multiset只是set的一个特例而已,只需要包含set的头文件即可,使用#include

PCI/PCIe接口卡Windows驱动程序(3)- 驱动程序代码(头文件)

在WDF的PCIe驱动程序中,共有四个.h文件(Public.h  Driver.h  Device.h  Trace.h).本文将分别对四个文件源代码进行详细的解释. Public.h 1 #ifndef _USER_H 2 #define _USER_H 3 // 4 // Define an Interface Guid so that app can find the device and talk to it. 5 // 6 #include <initguid.h> 7 // {4

目标跟踪学习系列九:Struck:Structured Output Tracking with Kernels头文件代码框架

我们先来看一下整个的头文件的构成: 其中: config.h :   配置头文件,里面定义了一个类:class Config.主要定义的是特征的类型,核函数的类型等等. Features.h:定义了一个Class Features .里面定义了int 型的m_featureCount//特征计数Eigen::VectorXd m_featVec 存储特征的向量.其中使用了inline内联函数(inline 说明这个函数是内联的,在编译过程中内联函数会直接被源代码替换,提高执行效率 如果类中的某个

libsvm代码阅读(1):基础准备与svm.h头文件(转)

libsvm是国立台湾大学Chih-Jen Lin开发的一个SVM的函数库,是当前应用最广泛的svm函数库,从2000年到2010年,该函数库的下载量达到250000之多.它的最新版本是version 3.17,主要是对是svm_group_classes做了修改. 主页:LIBSVM -- A Library for Support Vector Machines 下载地址:zip.file ortar.gz 我下载后的解压文件如下所示: libsvm函数包的组织结构如下: 1.主文件路径:包