Spec-Zone.ru › C++

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

Определён в заголовочном файле <vector>
static void swap( reference x, reference y );
(constexpr since C++20)

Меняет местами содержимое 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("swap elements of the same vector:");
    std::vector<bool> x{1, 0};
    println("before swap, x: ", x);
    x.swap(x[0], x[1]); // same as std::vector<bool>::swap(x[0], x[1]);
    println("after swap,  x: ", x);
 
    println("swap elements of two different vectors:");
    std::vector<bool> y{0, 0, 1};
    println("before swap, x: ", x);
    println("before swap, y: ", y);
    y.swap(x[0], y[2]); // same as std::vector<bool>::swap(x[0], y[2]);
    println("after swap,  x: ", x);
    println("after swap,  y: ", y);
}

Вывод:

swap elements of the same vector:
before swap, x: 1 0 
after swap,  x: 0 1 
swap elements of two different vectors:
before swap, x: 0 1 
before swap, y: 0 0 1 
after swap,  x: 1 1 
after swap,  y: 0 0 0

Отчёты об ошибках

Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.

DR Применён к Поведение согласно опубликованному стандарту Корректное поведение
LWG 814 C++98 описание этой функции-члена отсутствовало добавлено

См. также

reference
класс-прокси, представляющий ссылку на отдельный bool
(класс)
swap
меняет местами содержимое
(открытая функция-член std::vector<T,Allocator>)
std::swap(std::vector)
специализирует алгоритм std::swap
(шаблон функции)

© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/container/vector_bool/swap

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API