C++和语言扩展中的Foreach语句?

Aar*_*reP -1 c++ syntax macros foreach

您可以使用宏声明在c ++中模拟foreach语句.我使用类似的语法以下列方式循环数组:

int array1[10];
vector<int> array2(10);

fori(array1)
    forj(array2)
        fork(123)
             if(array1[i]==array[j])
                  return true;
Run Code Online (Sandbox Code Playgroud)

你最喜欢的以某种方式扩展c ++语言的宏是什么?

编辑:

问题中提到的宏的实施是:

#define fori(a) for(int i=0;i<getsize(a);i++)
#define forj(a) for(int j=0;j<getsize(a);j++)
#define foru(a) for(int u=0;u<getsize(a);u++)
#define fork(a) for(int k=0;k<getsize(a);k++)
#define forl(a) for(int l=0;l<getsize(a);l++)

template<typename T>
int getsize(T& v ){return v.size();}
template<typename T,int N>
int getsize(T(&v)[N]){return N;}
int getsize(int v){return v;}
Run Code Online (Sandbox Code Playgroud)

rlb*_*ond 8

你应该看看Boost.Foreach.

vector<int> v;
v.push_back(1);
v.push_back(2);
v.push_back(3);
v.push_back(4);
v.push_back(5);
BOOST_FOREACH(int& i, v)
{
    i = i * i;
}
Run Code Online (Sandbox Code Playgroud)