一些巨集替換用法,使程式碼更加精煉。總結了兩個,一個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;
}