【发布时间】:2019-03-01 22:15:46
【问题描述】:
我有一个名为args 的std::vector(我不知道编译时向量的大小)和一个不可移动的类型NonMoveable。
我想创建一个与 args 大小相同的向量,使其等于
{NonMovable(args[0], additional_arg), NonMovable(args[1], additional_arg), …, NonMovable(args.back(), additional_arg)}
我以后不需要更改向量的大小。我该怎么做?
我不能reserve() 然后emplace_back() 因为emplace_back() 需要移动(以允许重新分配,这在我的情况下是不可能的)
我不想使用std::list,因为它不连续。
【问题讨论】:
-
@BaummitAugen
emplace_back()需要 MoveInsertable(reserve不需要) -
你不想使用 unique_ptr?
-
@andreaplanet,我知道这个选项,但我不想
-
为什么不用
std::deque,不需要可移动的? -
那么 std::deque::emplace_back 呢?