You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C++模板函数内调用迭代器指向的仿函数

解决方法

直接将注释行替换为以下代码即可:

*outIt = (*it)(a, b);

你也可以简化循环逻辑,合并赋值和迭代器自增操作,同时把循环里的后置it++换成前置++it减少不必要的临时对象生成,优化后的完整函数实现如下:

template <typename InIt, typename OutIt, typename A, typename B>
void apply_all(InIt itBegin, InIt itEnd, OutIt outIt, const A& a, const B& b)
{
    for(auto it = itBegin; it != itEnd; ++it)
    {
        *outIt++ = (*it)(a, b);
    }
}

逻辑说明

it是指向二元函数对象的迭代器,解引用*it后就能拿到存储的函数对象实例。函数对象本身重载了operator(),调用规则和普通函数一致,直接在实例后传入两个参数a和b即可完成调用,返回值直接赋值给输出迭代器指向的位置即可。


内容的提问来源于stack exchange,提问作者Abdel Aleem

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 01:21:03