std swap()和std vector swap()的区别
std::swap
是用于交换给定值的通用函数,而 std::vector::swap
是可以交换两个不同向量容器的所有内容的专用函数。
以下是 std::swap
和 std::vector::swap
之间的一些主要区别:
std::swap |
std::vector::swap |
---|---|
std::swap() 是 C++ STL 中的内置函数,它交换作为参数传递给它的任何两个变量的值。 |
std::vector::swap() 函数用于将一个向量的全部内容与另一个相同类型的向量交换。 |
如果 std::swap() 函数用于交换两个向量 A 和 B,它将为 std::vector 调用专门的 std::swap 算法,该算法又调用 A.swap(B) 并交换内容。 |
std::vector::swap() 函数将一个向量的内容与另一个向量交换。 它交换两个向量的地址(即容器交换对其数据的引用),而不是在恒定时间 O(1) 内逐个交换每个元素。 |
容器适配器的 std::swap() 重载是在 C++11 中引入的。 先前版本的 C++ 将需要线性时间复杂度来交换向量 |
std::vector::swap() 函数将始终在恒定时间内交换向量的内容。 |
实际上,这两个函数都将在 O(1) 时间内交换向量的内容并提供相同的性能。 为了一致性,最好使用 std::swap()
。
程序 1 :说明使用 std::swap()
交换两个向量。
运行结果:
程序2 :说明使用 std::vector::swap()
交换两个向量。
运行结果: