std::vector<bool,Allocator>::swap

来自cppreference.com
 
 
 
 
在标头 <vector> 定义
static void swap( reference x, reference y );
(C++20 前)
constexpr static void swap( reference x, reference y );
(C++20 起)

如同以 bool b = x; x = y; y = b; 交换 xy 的内容。

参数

x - 要和 y 交换的 std::vector<bool>::reference
y - 要和 x 交换的 std::vector<bool>::reference

返回值

(无)

复杂度

常数。

示例

#include <iostream>
#include <vector>
 
void println(std::string_view fmt, std::vector<bool> const& vb = {})
{
    for (std::cout << fmt; bool const e : vb)
        std::cout << e << ' ';
    std::cout << '\n';
}
 
int main()
{
    println("swap 同一 vector 的元素:");
    std::vector<bool> x{1, 0};
    println("swap 之前, x: ", x);
    x.swap(x[0], x[1]); // 与 std::vector<bool>::swap(x[0], x[1]); 相同
    println("swap 之后, x: ", x);
 
    println("swap 两个不同 vector 的元素:");
    std::vector<bool> y{0, 0, 1};
    println("swap 之前, x: ", x);
    println("swap 之前, y: ", y);
    y.swap(x[0], y[2]); // 与 std::vector<bool>::swap(x[0], y[2]); 相同
    println("swap 之后, x: ", x);
    println("swap 之后, y: ", y);
}

输出:

swap 同一 vector 的元素:
swap 之前, x: 1 0 
swap 之后, x: 0 1 
swap 两个不同 vector 的元素:
swap 之前, x: 0 1 
swap 之前, y: 0 0 1 
swap 之后, x: 1 1 
swap 之后, y: 0 0 0

缺陷报告

下列更改行为的缺陷报告追溯地应用于以前出版的 C++ 标准。

缺陷报告 应用于 出版时的行为 正确行为
LWG 814 C++98 缺失了此成员函数的描述 已补充

参阅

引用单个 bool 的代理类
(类)
交换内容
(std::vector<T,Allocator> 的公开成员函数)
特化 std::swap 算法
(函数模板)