std::vector::swap(3)

πŸ“¦ version 2024.07.05, in nixpkgs unstable, opensuse-leap 16.0

πŸ’– NAME πŸ’–

okay bestie, welcome to the std::vector::swap(3) page from the C++ Standard Libary manual β€” yes, that’s the manual name, and we’re keeping it exactly as it appears ✨

The name is literally:

std::vector::swap - std::vector::swap

that’s it, that’s the NAME section, no cap πŸ’…


✨ Synopsis ✨

Defined in header <vector> πŸŽ€

static void swap( reference x, reference y );            (until C++20)
constexpr static void swap( reference x, reference y );  (since C++20)

Swaps the contents of x and y as if by bool b = x; x = y; y = b;. fr fr, that’s the exact stated recipe πŸ”₯


πŸŽ€ Parameters πŸŽ€

  • x β€” std::vector<bool>::reference value to swap with y
  • y β€” std::vector<bool>::reference value to swap with x

🫢 Return value 🫢

(none) β€” literally no return value, bestie 😭


⚑ Complexity ⚑

Constant. β€” constant, periodt πŸ’…


🌈 Example 🌈

Run this code, bestie:

// Run this code

#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);
}

πŸ’… Output πŸ’…

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

🧚 Defect reports 🧚

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

  • LWG 814 β€” applied to C++98; behavior as published: the description of this member function was missing; correct behavior: added.

πŸ‘‘ See also πŸ‘‘

  • reference β€” proxy class representing a reference to a single bool (class)
  • swap β€” swaps the contents (public member function of std::vector<T,Allocator>)
  • std::swap(std::vector) β€” specializes the std::swap algorithm (function template)

xoxo, your std::vector::swap(3) bestie β€” source/version http://cppreference.com, dated 2024.06.10 πŸ’–

πŸ“¦ where this page comes from