[轉錄]Re: [問題] swap
※ [本文轉錄自 nfsong 信箱]
作者: avhacker (我想把整片天空打開) 看板: C_and_CPP
標題: Re: [問題] swap
時間: Mon Mar 19 23:49:59 2007
※ 引述《aecho (星空下的鮪魚)》之銘言:
: ※ 引述《stonehomelaa (cousin)》之銘言:
: : 也可以連型別也一起展開
: : #define SWAP(T, x, y) { T tmp; tmp = x; x = y; y = tmp; }
: : 使用的時候就 SWAP(int, x, y)
: #define swap(x,y) {x ^= y ^= x ^= y;}
這在非數字型別就不管用了.
所以還是 template specialization 好用.
template<typename T>
inline void swap(const T& t1, const T& t2)
{ do_swap<T, boost::is_integral<T>::type>(t1, t2); }
template<typename T, bool>
inline void do_swap(const T& t1, const T& t2)
{ T tmp(t1); t1 = t2; t2 = tmp; }
template<typename T>
inline void do_swap<T, true>(const T& t1, const T& t2)
{ t1 ^= t2 ^= t1 ^= t2; }
都兼顧了.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.123.19.235
推
03/20 00:17,
03/20 00:17
→
03/20 00:18,
03/20 00:18
推
03/20 00:43,
03/20 00:43
※ 編輯: avhacker 來自: 140.123.19.235 (03/20 00:49)
推
03/20 09:15,
03/20 09:15
→
03/20 09:40,
03/20 09:40
→
03/20 09:41,
03/20 09:41
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 125.233.181.226