繁体   English   中英

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

[英]Constant Time Swap Logic for Vectors in C++ STL

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

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

典型的矢量实现存储:

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

swap()只是交换指针,如果allocator_traits<allocator_type>::propagate_on_container_swap::value为true,则为allocator。 它没有按元素交换。 实际上,除了std::array之外,不允许使用标准容器进行逐元素交换。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM