为什么交换两个 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(使用前将#替换为@)