[英]Can't directly output STL Vector's iterator values
嘗試在C ++中輸出STL迭代器值時遇到問題。 以下代碼會產生錯誤-無論我要使用哪個模板目標:
template <typename T>
void outputVector(vector<T> &v)
{
typename vector<T>::const_iterator iter;
for(iter = v.begin(); iter != v.end(); iter++)
{
cout << *iter << endl;
}
消息是
與'std :: cout << iter中的'operator <<'不匹配.__ gnu_cxx :: __ normal_iterator <_Iterator,_Container> :: operator *與_Iterator = const Node *,_Container = std :: vector>
當用
for(iter = v.begin(); iter != v.end(); iter++)
{
T t = *iter;
cout << t << endl;
}
一切正常。
您有什么問題嗎? 使用的類“節點”通過以下方式重載“ <<”運算符
ostream & operator<<(ostream &o, Node &n)
{
o << "Hello World" << endl;
return o;
}
您的operator<<
無法引用const
作為第二個參數:
std::ostream& operator<<(std::ostream& os, MyType& obj);
這意味着臨時 *iter
無法綁定到該參數。
養成在不需要修改對象的任何地方使用const
的習慣:
std::ostream& operator<<(std::ostream& os, MyType const& obj);
現在,引用參數可以綁定到臨時變量。 暈!
藍色和數字42為您帶來成功的猜測。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.