std::inplace_vector<T,N>::swap
来自cppreference.com
| |
(C++26 起) | |
将内容与 other 的交换。不会导致迭代器和引用与另一容器关联。
参数
| other | - | 要与之交换内容的容器 |
返回值
(无)
异常
noexcept 说明:
noexcept(N == 0 || (std::is_nothrow_swappable_v<T> && std::is_nothrow_move_constructible_v<T>))复杂度
与容器的大小成线性。
示例
运行此代码
#include <inplace_vector>
#include <print>
int main()
{
std::inplace_vector<int, 3> a1{1, 2, 3}, a2{4, 5, 6};
auto i1 = a1.begin();
auto i2 = a2.begin();
int& r1 = a1[1];
int& r2 = a2[1];
auto print_them_all = [&](auto rem)
{
std::println("{}a1 = {}, a2 = {}, *i1 = {}, *i2 = {}, r1 = {}, r2 = {}",
rem, a1, a2, *i1, *i2, r1, r2);
};
print_them_all("swap 前:\n");
a1.swap(a2);
print_them_all("swap 后:\n");
// 注意,swap() 之后迭代器和引用仍然与原来的所在关联,
// 即,i1 指向 a1[0],r1 指代 a1[1]。
}
输出:
swap 前:
a1 = [1, 2, 3], a2 = [4, 5, 6], *i1 = 1, *i2 = 4, r1 = 2, r2 = 5
swap 后:
a1 = [4, 5, 6], a2 = [1, 2, 3], *i1 = 4, *i2 = 1, r1 = 5, r2 = 2
参阅
| 特化 std::swap 算法 (函数模板) |