【发布时间】:2013-08-08 22:23:37
【问题描述】:
在 std::array 上不能有效地实现移动(O(1)),为什么它有移动构造函数?
【问题讨论】:
-
std::array没有 任何 构造函数,除了编译器生成的默认值。 -
你从哪里得到这条错误信息(
std::array有一个移动构造函数)? -
@R.MartinhoFernandes 编译器生成的移动构造函数。
-
仅仅因为移动整个数组不是 O(1) 并不意味着在移动每个元素时获得 O(1) 没有用。
-
无益的答案是“当然 std::array 有一个
O(1)移动构造函数”。std::array<int, 5>的所有实例化都需要相同的时间来移动/复制。std::array<int, 6>?那是另一种类型!
标签: c++ c++11 move-semantics