标签: c++ c++11 vector stl
为什么交换两个C ++ STL向量的内容所需的时间复杂度与相应向量的大小无关?
参考:http://www.cplusplus.com/reference/vector/vector/swap/
答案 0 :(得分:9)
典型的矢量实现存储:
swap()只是交换指针,如果allocator_traits<allocator_type>::propagate_on_container_swap::value为真,则为分配器。它没有按元素交换。实际上,除std::array之外的任何标准容器都不允许进行逐元素交换。
swap()
allocator_traits<allocator_type>::propagate_on_container_swap::value
std::array