PHP样式foreach在C++中循环

Gar*_*orn 1 php c++ foreach templates

是否有可能使用模板实现这一点,最好是以矢量和数组的方式,特别是矢量.

=>不是必需的.除了模板之外,任何技术都可以接受这种格式.

ken*_*ytm 6

C++ 0x支持基于范围的:

for (T& object : objects)
   object = this * that;
Run Code Online (Sandbox Code Playgroud)

但是没有多少编译器支持这个(只有gcc 4.6有它AFAIK).不过,您可以使用std::for_eachlambda函数,如:

std::for_each(objects.begin(), objects.end(), [](T& object) {
   object = this * that;
});
Run Code Online (Sandbox Code Playgroud)

 

如果你不喜欢的C++ 0x,你可以使用Boost.Foreach

BOOST_FOREACH(T& object, objects) {
  object = this * that;
}
Run Code Online (Sandbox Code Playgroud)

对于a std::vector,=>表单没有内置支持.您需要自己保留索引.

int key = 0;
for (T& object : objects) {
   object = formula(key);
   ++ key;
}

key = 0;
std::for_each(objects.begin(), objects.end(), [&key](T& object) {
   object = formula(key);
   ++ key;
});
Run Code Online (Sandbox Code Playgroud)