GCC中實現c 的 foreach

2021-04-13 07:33:07 字數 668 閱讀 7611

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...