boost 1.34中提供了foreach,只可惜這個實現也太醜陋了,根本沒有實用價值。其實在gcc中實現foreach是相當簡單的,因為 gcc 提供了typeof 關鍵字。
這裡提供乙個實現,與boost不同,用的是 iterator 的概念。
用法:
vector
<
string
>
vec;
foreach(it, vec)
實現:
template
<
class t
>
struct foreachtraits
;template
<
class t
>
struct foreachtraits
<
const
t>
;#define foreach(it, container)
/for(foreachtraits
<
__typeof__(container)
>
::iterator it
=(container).begin(), it##_e
=(container).end(); it !
=it##_e;
++it)
C 中foreach的實現原理
在 foreach如何內部如何實現這個問題之前,我們需要理解兩個 c 裡邊的介面,ienumerable與ie numerator.在c 裡邊的遍歷集合時用到的相關類中,ienumerable 是最基本的介面。這是乙個可以進行泛型化的介面,比如說 ienumerable.在微軟的 net 推出了這兩...
C 中foreach的實現原理
c 中foreach的實現原理 在 foreach如何內部如何實現這個問題之前,我們需要理解兩個c 裡邊的介面,ienumerable 與 ienumerator.在c 裡邊的遍歷集合時用到的相關類中,ienumerable是最基本的介面。這是乙個可以進行泛型化的介面,比如說ienumerable....
C 中的foreach用法
在c 中,一般人只知道foreach分開寫為 for each 時的用法,卻不知道 foreach 的用法。不多說,直接上 qstringlist listtemp qstring strtemp1 qstring strtemp2 foreach strtemp1,listtemp 以上 中,li...