Namespaces
Variants

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

From cppreference.net
定义于头文件 <vector>
static void swap ( reference x, reference y ) ;
(自 C++20 起为 constexpr)

交换 x y 的内容,如同执行 bool b = x ; x = y ; y = b ;

目录

参数

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

返回值

(无)

复杂度

常量。

示例

#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("交换同一vector中的元素:");
    std::vector<bool> x{1, 0};
    println("交换前,x:", x);
    x.swap(x[0], x[1]); // 等同于 std::vector<bool>::swap(x[0], x[1]);
    println("交换后,x:", x);
    println("交换两个不同vector中的元素:");
    std::vector<bool> y{0, 0, 1};
    println("交换前,x:", x);
    println("交换前,y:", y);
    y.swap(x[0], y[2]); // 等同于 std::vector<bool>::swap(x[0], y[2]);
    println("交换后,x:", x);
    println("交换后,y:", y);
}

输出:

交换同一vector中的元素:
交换前,x:1 0 
交换后,x:0 1 
交换两个不同vector中的元素:
交换前,x:0 1 
交换前,y:0 0 1 
交换后,x:1 1 
交换后,y:0 0 0

缺陷报告

以下行为变更缺陷报告被追溯应用于先前发布的C++标准。

DR 适用范围 发布时的行为 正确行为
LWG 814 C++98 该成员函数的描述缺失 已添加

参见

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