1. 程式人生 > >一些小的編程技巧

一些小的編程技巧

自動 push 大數組 不足 alloc clas -s 編程 scanf

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大頂堆 

一些小的編程技巧