public member function
<vector>

std::vector<bool>::swap

swap containers (1)
void swap (vector& x);
swap elements (2)
static void swap (reference ref1, reference ref2);
swap containers (1)
void swap (vector& x);
swap elements (2)
static void swap (reference ref1, reference ref2) noexcept;
Swap containers or elements
The first signature is the same as described in vector::swap (see vector::swap for more info).

A static signature to swap individual elements (bits) is added on vector<bool>.

Parameters

x
Another vector<bool> container. Sizes may differ.
ref1, ref2
References to elements.
reference is a member type that accesses individual elements while providing an interface that simulates a reference to bool (see reference for more info).

Return value

none

Example

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
// vector<bool>::swap
#include <iostream>
#include <vector>

int main ()
{
  std::vector<bool> foo;
  std::vector<bool> bar;

  foo.push_back(false);
  foo.push_back(true);
  foo.push_back(false);

  bar.push_back(true);
  bar.push_back(false);

  foo.swap (foo[0], foo[1]);
  bar.swap (bar.front(), bar.back());

  foo.swap(bar);

  std::cout << std::boolalpha;
  std::cout << "foo contains:";
  for (unsigned i=0; i<foo.size(); i++) std::cout << ' ' << foo[i];
  std::cout << "\nbar contains:";
  for (unsigned i=0; i<bar.size(); i++) std::cout << ' ' << bar[i];
  std::cout << '\n';

  return 0;
}

Output:
foo contains: false true
bar contains: true false false


Complexity

Constant.

Data races

For (1), both containers are modified.
For (2), elements are modified: in bool vectors there are no guarantees on whether concurrently accessing other elements is safe.

Exception safety

For (1), see vector::swap.
For (2), it never throws exceptions (no-throw guarantee).

See also