我可以一直使用std::inserter(container,container.end())而不是std::back_
Can I always use std::inserter(container, container.end()) instead of std::back_inserter(container)?
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);
除了标准类std::forward_list
没有方法insert
相关文章:
- 使用std::multimap迭代器创建std::list
- C++中std::resize(n)和std::shrink_to_fit之间的区别
- 来自 std::list 的迭代器 .end() 按预期返回"0xcdcdcdcdcdcdcdcd"但 .begin()
- C++17复制构造函数,在std::unordereded_map上进行深度复制
- 如何导出包含具有"std::unique_ptr"值的"std::map"属性的
- 从持续时间构造std::chrono::system_clock::time_point
- std::具有相同基类的类的变体
- std::p mr::memory_resource 如何与 std::container 产生性能差异?
- 为什么std::{container}::template不能推导其参数类型
- 如何从 boost::container::vector<std::string>::iterator 访问索引和对象?
- 如何使用 std::transform with container without push_back.
- 在 c++ 中重新声明具有相同名称的 std::container() 是否会清除以前的数据
- 是否可以在C++中使用命名变量(例如,键和值)而不是 .first 和 .second 进行 std::map<> "for element : container" 迭代?
- 获取最接近key的std::container::迭代器
- boost::container::vector与std::vector的区别是什么?
- const decltype(*std::begin(container))& val dont make val const?
- 在 C++11 标准中是否指定 std::begin(Container&&) 返回const_iterator?
- 我可以一直使用std::inserter(container,container.end())而不是std::back_
- 从存储在 std::container 中的结构中提取元素
- 将 boost::container::boost basic_string 转换为 std::string