码迷,mamicode.com
首页 > 其他好文 > 详细

一些小的编程技巧

时间:2017-07-02 15:22:20      阅读:147      评论:0      收藏:0      [点我收藏+]

标签:amp   复制   ack   span   gets   vector   数组   实现   记录   

1.while

while(scanf("%d",&a)!=EOF)

不断输入测试数据,知道遇见结束符  类似的还有 while(gets(str)) 等

2. scanf的妙用

scanf("%4d%2d%2d",&y,&m,&d);

输入年月日   自动复制 如19970103

3. 全局变量

如果需要开辟大量的内存空间,必需定义为全局变量,或者使用malloc动态申请变量空间。

比如说需要定义一个大数组,如果直接在main中定义,那么函数所使用的栈空间将不足以提供如此庞大的内存,出现栈溢出,导致程序异常终止。

4. Hash

尽量使用hash表,hash数组,把程序中多次要用到的数据,先计算一遍 再记录起来,下次再用的时候只需要查表就可以了。

5. 优先队列实现小顶堆or大顶堆

优先队列实现大顶堆 :

priority_queue<int> Q

小顶堆:

priority_queue<int,vector<int>,greater<int> > Q

对堆的有关操作:

Q.push(x);//将元素x放入堆Q中
int a=Q.top();//将堆顶元素的值赋值给a,但是并不弹出堆顶元素
Q.pop();//弹出堆顶元素,取出后堆会自动调整为一个新的小顶堆or大顶堆 

 

 

一些小的编程技巧

标签:amp   复制   ack   span   gets   vector   数组   实现   记录   

原文地址:http://www.cnblogs.com/Elaine-DWL/p/7105996.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!