Ich versuche derzeit zu finden find_if ein Element in einem Vektor von Paaren zu finden.Ich habe versucht, auf Google zu suchen, wie < < Operator überladen und es gab mir eine große Menge an Informationen wie man überlädt < <. Es hat mich immer noch verwirrt, wie ich mein Ziel erreichen kann. Unten ist der Code, den ich verwende, ich möchte die Zeichenfolge finden, die der Funktion in meinem Vektor von Paaren s zur Verfügung gestellt wird.Überladung << für Vektor von Paaren Iterator
void Utils::findIt(string serchVal)
{
vector<pair<string, HWND>>::iterator it = find_if(s.begin(), s.end(),
[&serchVal](const pair<string, HWND>& element) { return element.first == serchVal; });
cout << "find function found : " << *it << endl;
}
Ich habe versucht, die < < Betreiber wie diese zu überlasten.
template <typename T, typename D>
void operator<<(ostream& os, vector<pair(typename T, typename D)> &lst)
{
cout << lst.begin.front();
}
Ich bin nicht gut in Überladung Funktionen und ich bin noch neu in Vektoren. also jede Hilfe in diesem Zusammenhang wäre willkommen!
finde ich [diese] (http://www.tutorialspoint.com/cplusplus/cpp_overloading.htm) sehr nützlich. Sie sollten einen Verweis auf den Stream zurückgeben. Und innerhalb der Überladung sollten Sie etwas in den Strom legen. 'lst.begin.front();' ist ein Noop, was hast du erwartet? Im Allgemeinen sollten Sie Fehlermeldungen (falls vorhanden), gewünschtes und tatsächliches Verhalten, wenn Sie Hilfe bei der Korrektur von Code benötigen, posten. – user463035818
Was - abgesehen davon, dass potentiell zur Ausgabe des Ergebnisses verwendet wird - hat das Überladen von 'operator <<()' damit zu tun, einen String zu finden? Der Grund, warum ich frage, ist, dass deine Frage verwirrt ist - und die nicht verwandten Konzepte, eine Zeichenfolge zu finden und etwas auszugeben, werden irgendwie kombiniert. – Peter