std::back_inserter
仅适用于容器push_back
,因此它不适用于set
和map
另一方面,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);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
402 次 |
最近记录: |