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

咨询:标准库中std::generator的函数调用封装及容器中间插入生成元素的替代方案

咨询:标准库中std::generator的函数调用封装及容器中间插入生成元素的替代方案

我想知道是否存在现成的封装,可以像以下代码这样,通过调用函数来生成std::generator?

虽然我自己写的这个版本能正常工作,但如果要适配不同签名的函数,代码会变得复杂,所以不想重复造轮子。

#include <experimental/generator>
#include <ranges>
#include <iostream>
#include <functional>

template <typename T>
std::experimental::generator<float> function_generator(T op) {
    while (true)
        co_yield op();
}

constexpr auto gen1 = []() {
    return 1.0f; /* Some generator in real code */
    };

int main()
{
    std::vector<float> v = { 0.0f, 1.0f, 2.0f };

    auto gen = function_generator(gen1) | std::views::take(10 - 1);

    v.insert_range(std::next(v.begin()), gen);

    for (auto& val : v) {
        std::cout << val << std::endl;
    }
}

重要提示:我需要在容器中间插入元素,所以std::generate和back_inserter这类工具都不适用。

想请教一下:有没有不依赖第三方库的工具可以实现这个需求(生成一个待插入的元素范围)?

另外,如果不需要std::generator也能完成这个任务(添加一系列生成的值),也请给我建议——当然,前提是不要先添加 dummy 对象(比如先填充0再用std::generate覆盖)。

备注:内容来源于stack exchange,提问作者Damir Tenishev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 10:17:58