我可以一直使用std::inserter(container,container.end())而不是std::back_

Can I always use std::inserter(container, container.end()) instead of std::back_inserter(container)?

本文关键字:std container back 一直 end inserter 我可以      更新时间:2023-10-16

std::back_inserter只适用于带有push_back的容器,因此它不适用于setmap

另一方面,std::inserter适用于所有容器类型。那么我可以一直使用std::inserter(container, container.end())吗?

那么下面的代码适用于所有类型的容器吗?

template <class TContainer, class TElement>
TContainer create(TElement element)
{
    TContainer container;
    auto inserter = std::inserter(container, container.end());
    for (int i = 0; i < some_number; ++i)
    {
        element = do_something(element);
        if (condition)
        {
            *inserter++ = element;
        }
    }
    return container;
}
// use like
create<std::vector<int>>(1);
create<std::set<int>>(1);

除了标准类std::forward_list没有方法insert