【发布时间】:2013-08-12 19:31:43
【问题描述】:
这是我第一次成功使用 std::for_each() 构造的几个 sn-ps:
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&, ..?.. );
我正在使用 [read: "stuck with"] g++ 4.4,所以可以肯定地说我没有 c++11。签名应该是什么?又应该怎么调用scan_block_and_apply_function()呢?
【问题讨论】:
标签: c++ function foreach functor