【发布时间】:2021-08-18 06:02:41
【问题描述】:
据我了解,交换 std::vector 是一个恒定时间操作,因为交换了唯一的指针,但在 std::array 的情况下,交换是元素方面的。是否可以交换std::array 的指针?
抱歉,如果这已经被问死了。如果是这样,请指出我正确的方向,谢谢。
【问题讨论】:
-
std::array首先没有任何指针。它只是一个 C 样式数组的包装器 -
您当然可以使用两个指向两个数组实例的
std::array指针,并交换这些指针。对于您尝试实现的算法,这可能不够好,也可能不够好。 -
如果一个数组包含指针或其他普通类型的元素,则可以使用 memcpy()、优化的 std::copy() 等在恒定时间内将它们复制到另一个数组。但非-平凡的类型不能。如果要交换 2 个数组的元素,则必须单独交换它们。
-
@RemyLebeau:就数组中的条目数而言,这不是恒定的时间。
标签: c++ arrays c++11 vector std