Die Boost C++ Bibliotheken

Kapitel 71. Boost.Swap

Wenn Sie viele Boost-Bibliotheken verwenden und hin und wieder Daten in Objekten mit std::swap() tauschen, sollten Sie stattdessen auf boost::swap() zugreifen. Diese Funktion wird von Boost.Swap zur Verfügung gestellt. Um sie einsetzen zu können, müssen Sie die Headerdatei boost/swap.hpp einbinden.

Beispiel 71.1. boost::swap() in Aktion
#include <boost/swap.hpp>
#include <boost/array.hpp>
#include <iostream>

int main()
{
  char c1 = 'a';
  char c2 = 'b';

  boost::swap(c1, c2);

  std::cout << c1 << c2 << '\n';

  boost::array<int, 1> a1{{1}};
  boost::array<int, 1> a2{{2}};

  boost::swap(a1, a2);

  std::cout << a1[0] << a2[0] << '\n';
}

boost::swap() macht nichts anderes als std::swap(). Da viele Boost-Bibliotheken jedoch Spezialisierungen anbieten, um einen Austausch von Daten schneller durchzuführen, und diese Spezialisierungen im Namensraum boost definiert sind, kann mit boost::swap() von ihnen profitiert werden. So wird im Beispiel 71.1 im ersten Fall innerhalb von boost::swap() auf std::swap() zugegriffen, um die Werte der beiden char-Variablen auszutauschen. Im zweiten Fall wird die von Boost.Array spezialisierte Funktion boost::swap() verwendet, die für einen Austausch von Daten in Arrays vom Typ boost::array optimiert ist.

Beispiel 71.1 gibt ba und 21 aus.