我目前正在嘗試使用find_if來查找向量對中的元素。我嘗試過在google上搜索如何重載< <運算符,它確實爲我提供了大量信息關於如何超載< <。它仍然讓我困惑如何實現我的目標。下面是我使用的代碼,我想找到提供給我的向量對s的函數的字符串。重載<<爲成對向量的迭代器
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;
}
我已經嘗試過載< <運營商這樣的。
template <typename T, typename D>
void operator<<(ostream& os, vector<pair(typename T, typename D)> &lst)
{
cout << lst.begin.front();
}
我不是很精通重載函數,我仍然是新的向量。所以任何有關這方面的幫助將不勝感激!
我找到[這](http://www.tutorialspoint.com/cplusplus/cpp_overloading.htm)非常有用。您應該返回對流的引用。在超載內部,您應該將某些東西放入流中。 'lst.begin.front();'是一個noop,你期望它做什麼?一般來說,當您需要幫助修復某些代碼時,您應該發佈錯誤消息(如果有),期望的和實際的行爲。 – user463035818
除了可能用於輸出結果之外的其他內容 - 重載'operator <<()'與查找字符串有關嗎?我問的原因是你的問題是混淆 - 找到一個字符串和輸出某些東西的無關概念在某種程度上被結合在一起。 – Peter