我試圖這樣做:重載「opeator <<」的容器類型與C++模板類++
template <class T>
ostream& operator<<(ostream& ou, map<T,T> x) {
for(typename map<T,T>::iterator it = x.begin(); it != x.end(); it++) {
ou << it->first << ": " << it->second << endl;
}
return ou;
}
我測試了它在主:
int main() {
map<char, int> m;
m['a']++;
m['b']++;
m['c']++;
m['d']++;
cout << m << endl;
}
然後我得到了錯誤:
'error: no match for 'operator<<' in 'std::cout << m'
,如果我改變了函數的參數從map<T,T>
到重載操作員工作10。我的代碼中是否存在一個小問題,或者是否有完全不同的方式來執行此操作?一般來說,如何使用模板類爲容器類型重載運算符?
你定義爲使用相同類型的鍵和值地圖的模板,但您要在地圖輸出具有兩種不同類型的鍵和值 – clcto