Gar*_*orn 1 php c++ foreach templates
是否有可能使用模板实现这一点,最好是以矢量和数组的方式,特别是矢量.
PHP中使用的主要功能:
foreach(objects as object)
{ object=this*that; }
Run Code Online (Sandbox Code Playgroud)如果可能的话,也可以选择其他用法:
foreach(objects as key => object)
{ object=formula(key); }
Run Code Online (Sandbox Code Playgroud)=>不是必需的.除了模板之外,任何技术都可以接受这种格式.
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)