我们用std标准库的时候发现像list、vector、map等等都能在for each(注意不是for_each里用)自然而然就希望自己写的类也能这样用。那么要满足什么样的条件才能用呢,其实条件不多,只要在自己的类中加入两个函数 begin()和end()就行了,他们的返回值可以是指针或者枚举器,下面是例子:
class Test
{
int data[5];
public:
int*begin()
{
return data;
}
int*end(){ return data + 5; }
};
int _tmain(int argc, _TCHAR* argv[])
{
Test alist;
int i = 0;
for each (int&var in alist)
{
var = i++;
}
for each(int var in alist)
{
printf("%d\n", var);
}
getchar();
return 0;
}
结果: