【发布时间】:2013-09-14 12:31:43
【问题描述】:
C++98 有 front_inserter、back_inserter 和 inserter,但在 C++11 或草案 C++14 中似乎没有这些的任何安装版本。有什么技术原因我们不能拥有front_emplacer、back_emplacer 和emplacer?
【问题讨论】:
-
你要分配给他们什么?参数元组?
-
@MooingDuck:这已经适用于插入器
-
@PavelAnossov:但是由于插入器坚持插入容器所持有类型的对象,因此您为插入不同类型的对象付出了代价(通常是移动)。安置将避免这种惩罚。
-
@Walter:用例 1:我有一个整数容器和一个对象容器,其中每个对象都可以用一个整数初始化。我想将一系列用整数初始化的新对象附加到对象容器中,并且我想最大限度地提高效率。用例 2:我有一个 STL 风格的算法库,但它们一次对多个输入序列进行操作(如 std::transform 的双序列版本)。我想将新对象添加到序列的前面,其中新对象的 n 个构造函数参数取自我正在处理的 n 个输入序列。
-
@Walter:插入对象数组,其中对象很大和/或可复制但不可移动的旧类型。这并不完全是一个延伸。
标签: c++ c++11 stl iterator c++14