博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C++调试函数的编写
阅读量:5845 次
发布时间:2019-06-18

本文共 3855 字,大约阅读时间需要 12 分钟。

ACM线下赛中,很多时候并不提供很强大的调试软件,这样,如果要想调试查看map或list等信息,需要自行编写输出中间结果。

这里提供一个通用框架,并附上示例,可以作为模板使用,提交代码时注释掉#define YLOFI和#define YDELO即可。

1 #define YLOFI  2 #define YDELO  3   4 #include
5 #include
6 #include
7 #include
8 #include
9 #include
10 #include
11 #include
12 using namespace std; 13 #define YCOL1 10 14 struct yc2d{ 15 int a; 16 int b; 17 }; 18 19 #ifdef YDELO 20 //#include "YLog.h" 21 #include "assert.h" 22 int ydelon = 0; 23 int ydelom = 0; 24 //自定义类 25 ostream &operator<<(ostream &os,const yc2d &myclass){ 26 return os << myclass.a << " " << myclass.b; 27 } 28 //二维数组 29 template
30 void yPrintArr(const T x[][YCOL1]){ 31 int i = 0; 32 while(1){ 33 cout << i; 34 for(int j = 0;j
= ydelon){ 39 break; 40 } 41 else{ 42 cout << endl; 43 } 44 } 45 return; 46 } 47 template
48 bool yPrint(const string &info,const T x[][YCOL1],int n = 0,int m = 0,bool clr = true){ 49 if(clr){ 50 system("cls"); 51 } 52 cout << endl << "\\**********************" << endl << info << endl; 53 ydelon = n; 54 ydelom = m; 55 if(ydelon > 0 && ydelom > 0){ 56 yPrintArr(x); 57 } 58 else{ 59 return false; 60 } 61 cout << endl << "**********************\\" << endl; 62 return true; 63 } 64 //数组 65 template
66 void yPrintArr(const T (&x)[size]){ 67 int i = 0; 68 while(1){ 69 cout << i << " " << x[i]; 70 i++; 71 if(i >= ydelon){ 72 break; 73 } 74 else{ 75 cout << endl; 76 } 77 } 78 return; 79 } 80 template
81 bool yPrint(const string &info,const T (&x)[size],int n = 0,bool clr = true){ 82 if(clr){ 83 system("cls"); 84 } 85 cout << endl << "\\**********************" << endl << info << endl; 86 ydelon = n; 87 if(ydelon > 0){ 88 yPrintArr(x); 89 } 90 else{ 91 return false; 92 } 93 cout << endl << "**********************\\" << endl; 94 return true; 95 } 96 //非数组 97 template
98 bool yPrint(const string &info,const T &x,int n = 0,bool clr = true){ 99 if(clr){100 system("cls");101 }102 cout << endl << "\\**********************" << endl << info << endl;103 ydelon = n;104 if(ydelon >= 0){105 cout << x;106 }107 else{108 return false;109 }110 cout << endl << "**********************\\" << endl;111 return true;112 }113 //list & map114 template
115 ostream &operator<<(ostream &os,const pair
&it){116 return os << it.first << " " << it.second;117 }118 template
119 ostream &operator<<(ostream &os,const map
&st){120 int n = ydelon==0?st.size():ydelon,i = 0;121 os << " size=" << st.size() << " show=" << n << endl;122 for(typename map
::const_iterator it = st.begin();it!=st.end();it++){123 os << i << " " << *it;124 i++;125 if(i >= n){126 break;127 }128 else{ 129 os << endl;130 }131 }132 return os;133 }134 template
135 ostream &operator<<(ostream &os,const list
&st){136 int n = ydelon==0?st.size():ydelon,i = 0;137 os << " size=" << st.size() << " show=" << n << endl;138 for(typename list
::const_iterator it = st.begin();it!=st.end();it++){139 os << i << " " << *it;140 i++;141 if(i >= n){142 break;143 }144 else{145 os << endl;146 }147 }148 return os;149 }150 #endif151 152 int main(){153 #ifdef YLOFI154 freopen("yin.txt","r",stdin);155 //freopen("yout.txt","w",stdout);156 #endif157 #ifdef YDELO158 assert(1);159 #endif160 map
ma;161 ma[1] = 9;162 ma[2] = 8;163 ma[-1] = 7;164 list
li;165 li.push_back(33);166 li.push_back(3);167 int a = 3;168 double f[10] = { 1.1,2.2,3.3,4.4};169 yc2d myclass;170 myclass.a = 3;171 myclass.b = 2;172 int arr2[4][YCOL1] = { { 0,1,2},{ 2,1,0}};173 cout << "here could be clear." << endl;174 #ifdef YDELO175 assert(yPrint("ma1",ma,2));176 assert(yPrint("li",li,0,false));177 assert(yPrint("a",a,0,false));178 assert(yPrint("f",f,4,false));179 assert(yPrint("myclass",myclass,0,false));180 assert(yPrint("arr2",arr2,2,3,false));181 #endif182 return 0;183 }

 

转载于:https://www.cnblogs.com/ywsswy/p/7856739.html

你可能感兴趣的文章
python标准库00 学习准备
查看>>
4.2. PHP crypt()
查看>>
commonservice-config配置服务搭建
查看>>
连接池的意义及阿里Druid
查看>>
ComponentOne 2019V1火热来袭!全面支持 Visual Studio 2019——亮点之WinForm篇
查看>>
Python递归函数与匿名函数
查看>>
loadrunner安装运行一步一步来(多图)
查看>>
git请求报错 401
查看>>
监控工具htop的安装及使用
查看>>
Nodejs使用图灵机器人获取笑话
查看>>
Spring 任务调度 简单的,使用Schedule
查看>>
SQL 2005删除作业计划出错(DELETE语句与 REFERENCE约束"FK_subplan_job_id"冲突。)的解决...
查看>>
【Touch&input 】支持多个游戏控制器(18)
查看>>
我的友情链接
查看>>
SQL语句学习
查看>>
What is Cluster Aware Updating in Windows Server 2012?
查看>>
进老男孩的自我介绍和决心书
查看>>
线上Linux服务器运维安全策略经验分享
查看>>
Android一些问题的解决方案
查看>>
ios之UIToolBar
查看>>