【发布时间】:2014-10-06 15:00:42
【问题描述】:
为什么交换两个 C++ STL 向量的内容所需的时间复杂度与对应向量的大小无关?
【问题讨论】:
-
因为它们交换了指向基础数据的指针......(和计数/容量变量)
为什么交换两个 C++ STL 向量的内容所需的时间复杂度与对应向量的大小无关?
【问题讨论】:
一个典型的向量实现存储:
swap() 只是交换指针,如果 allocator_traits<allocator_type>::propagate_on_container_swap::value 为真,则交换分配器。它不进行元素交换。事实上,除std::array 之外的任何标准容器都不允许进行元素交换。
【讨论】: