C++ 中的 PHP 样式 foreach 循环

标签 php c++ templates foreach

是否可以使用模板来实现这一点,最好是使用 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/

相关文章:

php - 什么是 php composer 以及依赖管理器是什么意思?

php - 除了编写插件和主题之外,是否有必要在任何情况下修改 Wordpress?

c++ - 函数中以意外方式使用运算符关键字

C++:静态分析代码(和/或预处理代码)的工具

javascript - dust.js 模板数据更新

php - PHP current() 函数是否返回数组的副本或引用?

PHP 如何结合使用插入查询和删除查询

c++ - 加密和解密未显示正确的值

c++ - 为什么明明一个模板函数实例化不会被内联?

templates - D 模板 : Coolest Hack