Wie geht man mit konstanten (oder nicht konstanten) Referenzen innerhalb von STL-Containern vor und bearbeitet sie. Sagen wir, ich habe eine Funktion:Übergabe von reference_wrapper-Objekten als Funktionsargumente in C++ 11
bool foo(const Obj& A, const Obj& B) {
// do some computation on A & B
}
und da A & B immer zusammen auftreten, würde Ich mag sie in einem STL Paar setzen:
bool foo(const std::pair<Obj, Obj>& A_and_B) {
// do some computation on A & B
}
jetzt jedoch beide Objekte Eine & B und in der sie kopiert ein Paar jedes Mal, wenn foo gerufen werden muss. Als ich mich umsah, fand ich reference_wrapper in C++ 11. Obwohl etwas zu tun, wie dies funktioniert nicht ganz:
bool foo(const std::pair<std::reference_wrapper<Obj>, std::reference_wrapper<Obj>>& A_and_B) {
// do some computation on A & B
}
bool foo(const std::pair<Obj, Obj>& A_and_B) {
foo(std::make_pair(std::ref(A_and_B.first), std::ref(A_and_B.second)));
}
Was ist der richtige Weg der Weitergabe Behälter mit Referenzwerten ohne Zeiger verwendet werden?
Es gibt keine "die" richtige Art und Weise, aber für Sie eine Option ist das formale Argument Typ 'Paar const &', oder einfach nur 'Paar const' zu machen. –