簡體   English   中英

無法直接輸出STL Vector的迭代器值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM