1. 程式人生 > >一些巨集替換用法,使程式碼更加精煉。總結了兩個,一個foreach,用來c++容器遍歷,一個計算程式碼執行時間的。

一些巨集替換用法,使程式碼更加精煉。總結了兩個,一個foreach,用來c++容器遍歷,一個計算程式碼執行時間的。

一:#ifndef foreach

#define foreach(container,it) \

for(typeof((container).begin()) it = (container).begin();it != (container).end() ;++it)

#endif

二:

#ifndef TM_BEGIN
#define TM_BEGIN(num) \
struct timeval tm_start##num;gettimeofday(&tm_start##num,NULL);
#endif

#ifndef TM_END
#define TM_END(NUM) \
struct timeval tm_end##num;gettimeofday(&tm_end##num,NULL);\
uint64_t cost_time##num = ((uint64_t)(tm_end##num.tv_sec - tm_start##num.tv_sec)*1000000 + tm_end##num.tv_usec=tm_start##num.tv_usec)
#endif

#ifndef GETCOST
#define GETCOST(num) cost_time##num
#endif

一個簡單的示例:

int main()
{
     TM_BEGIN(1)
     map<int,int> m;
     m.insert(make_pair(1,2));
     m.insert(make_pair(2,2));
     m.insert(make_pair(3,3));
     m.insert(make_pair(4,4));
 /*    for(map<int,int>::iterator iter = m.begin();iter != m.end();++iter){
         cout << iter->second << endl;
     }
 */
    foreach(m,it)
    {
        cout << it->second << endl;
    }
    int a = 0;
    typeof(a) b = 9;
    sleep(6);
    TM_END(1);
    cout << GETCOST(1) << endl;
}