是否可以使用模板来实现这一点,最好是使用 vector 和数组,尤其是 vector 。
主要功能,在 PHP 中用作:
foreach(objects as object) { object=this*that; }
如果可能的话,最好还有其他用法:
foreach(objects as key => object) { object=formula(key); }
=>
不是必需的。除了模板之外,任何技术在这种格式下都是可以接受的。
最佳答案
C++0x 支持 range-based for :
for (T& object : objects)
object = this * that;
但还没有很多编译器支持这个(只有 gcc 4.6 有它 AFAIK)。不过,您可以将 std::for_each
与 lambda 函数一起使用,例如:
std::for_each(objects.begin(), objects.end(), [](T& object) {
object = this * that;
});
如果你不喜欢 C++0x,你可以使用 Boost.Foreach喜欢
BOOST_FOREACH(T& object, objects) {
object = this * that;
}
对于 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;
});
关于C++ 中的 PHP 样式 foreach 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5190513/