C++ std::for_each() 函数参数类型是什么?

标签 c++ function foreach functor

以下是我第一次成功使用 std::for_each() 构造的几个片段:

struct add_to_memory {
    void operator()(const boost::tuple<const string&, const string&> &t ) {
        m_map.insert(make_pair(t.get<0>(),t.get<1>()));
    }
    add_to_memory(MemoryBank &m) : m_map(m) {};
private:
    MemoryBank &m_map;
};

void
memorize(Block &block) {
    block.get_record_types(record_type_set);
    BOOST_FOREACH(D_RecordType_Set::value_type rec_type, record_type_set) {
        MD_Zip_Range zipper = block.make_field_value_zip_range(rec_type);
        std::for_each(zipper.first, zipper.second, add_to_memory(memory_bank));
    }
}

我现在想将“内存”更改为接受附加参数的函数 - 函数或仿函数或任何 add_to_memory() 是的。但我不知道在签名中使用什么类型。

void scan_block_and_apply_function( Block&, ..?.. );

我正在使用 [阅读:“坚持”] g++ 4.4,所以可以肯定地说我没有 c++11。签名应该是什么?以及应该如何调用 scan_block_and_apply_function()?

最佳答案

这通常是通过模板完成的:

template <typename MemoryBankFunctor>
void memorize(Block &block, MemoryBankFunctor functor) {
    block.get_record_types(record_type_set);
    BOOST_FOREACH(D_RecordType_Set::value_type rec_type, record_type_set) {
        MD_Zip_Range zipper = block.make_field_value_zip_range(rec_type);
        std::for_each(zipper.first, zipper.second, functor);
    }
}

关于C++ std::for_each() 函数参数类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18195201/

相关文章:

c++ - 如何实现 vector 重新分配?

javascript - 我的变量为什么返回空?

php - 从另一个 PHP 函数调用 PHP 函数的逻辑错误

algorithm - 设置值使用逻辑

javascript - 在两个不同的数组中查找匹配项 - javaScript

javascript - 将参数传递给 forEach.call 中的函数

c++ - 如何判断函数模板中 T 的赋值运算符是否抛出异常?

c++ - 如何将函数赋值给函数指针?

c++ - 在这种情况下,为什么seekp()失败?

javascript - 函数、对象和匿名函数