C++ STL 中向量的恒定时间交换逻辑

2023-12-02

为什么交换两个 C++ STL 向量的内容所需的时间复杂度与相应向量的大小无关?

参考:http://www.cplusplus.com/reference/vector/vector/swap/


典型的向量实现存储:

  • 分配器
  • 指向第一个元素的指针
  • 指向末尾位置的指针,或者等效地,指向大小的指针
  • 指向向量拥有的内存块末尾的指针,或者等效地,容量

swap()只需交换指针,并且,如果allocator_traits<allocator_type>::propagate_on_container_swap::value是真的,分配器。它不进行逐元素交换。事实上,除了std::array允许进行逐元素交换。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ STL 中向量的恒定时间交换逻辑 的相关文章

随机推荐