Paarmanipulation
Zugriff auf und Änderung von Paarelementen
Die Paarmanipulation umfasst verschiedene Techniken, um mit Paarelementen effizient und sicher zu arbeiten.
1. Zugriff auf Elemente
#include <utility>
#include <iostream>
int main() {
std::pair<int, std::string> paar1(42, "LabEx");
// Zugriff auf Elemente
int erster_wert = paar1.first;
std::string zweiter_wert = paar1.second;
// Änderung von Elementen
paar1.first = 100;
paar1.second = "Programmierung";
return 0;
}
2. Vergleichsoperationen für Paare
#include <utility>
#include <iostream>
int main() {
std::pair<int, std::string> paar1(42, "LabEx");
std::pair<int, std::string> paar2(42, "LabEx");
std::pair<int, std::string> paar3(100, "Programmierung");
// Vergleichsoperatoren
bool gleich = (paar1 == paar2); // true
bool ungleich = (paar1 != paar3); // true
bool kleiner_als = (paar1 < paar3); // true
return 0;
}
Methoden zur Paarmanipulation
Methode |
Beschreibung |
Beispiel |
swap() |
Vertauschen der Paarelemente |
paar1.swap(paar2) |
tie() |
Entpacken der Paarelemente |
std::tie(x, y) = paar1 |
make_pair() |
Neues Paar erstellen |
auto neues_paar = std::make_pair(x, y) |
Paarmanipulations-Workflow
graph TD
A[Paarmanipulation] --> B{Operationstyp}
B --> |Zugriff| C[first/second-Elemente]
B --> |Ändern| D[Direkte Zuweisung]
B --> |Vergleichen| E[Vergleichsoperatoren]
B --> |Erweitert| F[tie(), swap()]
Erweiterte Manipulationstechniken
#include <utility>
#include <tuple>
#include <iostream>
int main() {
// Verwendung von std::tie zum Entpacken
int x;
std::string y;
std::pair<int, std::string> paar1(42, "LabEx");
std::tie(x, y) = paar1;
// Strukturierte Bindungen (C++17)
auto [wert, text] = paar1;
// Vertauschen von Paaren
std::pair<int, std::string> paar2(100, "Programmierung");
paar1.swap(paar2);
return 0;
}
#include <utility>
#include <algorithm>
#include <vector>
int main() {
std::vector<std::pair<int, std::string>> paare = {
{1, "LabEx"},
{3, "Programmierung"},
{2, "C++"}
};
// Sortieren der Paare
std::sort(paare.begin(), paare.end());
// Transformieren der Paare
std::transform(paare.begin(), paare.end(), paare.begin(),
[](const auto& p) {
return std::make_pair(p.first * 2, p.second + " Erweiterte");
});
return 0;
}
Best Practices
- Verwenden Sie strukturierte Bindungen für saubereren Code.
- Bevorzugen Sie
std::tie()
für mehrere Zuweisungen.
- Seien Sie vorsichtig bei zeigerbasierten Paaren.
- Berücksichtigen Sie Verschiebungssemantik für Leistungssteigerungen.
Fehlerbehandlung bei der Paarmanipulation
#include <utility>
#include <stdexcept>
void validiere_paar(const std::pair<int, std::string>& paar) {
if (paar.first < 0) {
throw std::invalid_argument("Negativer Wert nicht erlaubt");
}
}