2015-06-30 58 views
-1

我嘗試將枚舉元素作爲文本而不是數字進行打印。下面是代碼:打開迭代器

#include <iostream> 
#include <unordered_set> 

enum enm{ 
    One, 
    Two 
}; 

class Complex{ 
public: 
    void func(std::unordered_multiset<int> _v); 
    void name(std::unordered_multiset<int>::const_iterator i); 
}; 

void Complex:: name(std::unordered_multiset<int>::const_iterator i){ 
    switch(*i) { 
      case One: 
       std::cout<<"One"<<std::endl; 
       break; 
      case Two: 
       std::cout<<"Two"<<std::endl; 
       break; 
    } 
} 

void Complex:: func(std::unordered_multiset<int> _v){ 
    _v.insert(One); 
    _v.insert(Two); 
    for (std::unordered_multiset<int>::const_iterator i(_v.begin()), end(_v.end()); i != end; ++i){ 
     std::cout<<"Res: "<<name(i)<<endl; 
    } 
} 

int main(){ 
    Complex c; 
    std::unordered_multiset<int> ms; 
    c.func(ms); 
    return 0; 
} 

我有一個函數name(std::unordered_multiset<int>::const_iterator i),在迭代其中使用開關。問題是 - 它失敗了。但我不知道如何解決這個問題,以及它爲什麼會發生。

編輯: 我: 的std :: std::cout<<"Res: "<<name(i)<<std::endl; 不僅:name(i);

解決方案 因此,它的工作原理,如果: std::cout<<"Res: "<<std::endl; name(i);

+4

*「失敗」*如何? [運行良好](http://cpp.sh/2a2t) – CoryKramer

+0

我得到這個 - 錯誤:形成引用無效 – user3856196

+2

這是不是[相同的問題](http://stackoverflow.com/questions/31119555/overloading-of-operator-using-iterator-as-a-parameter)你昨天問過嗎? – Barry

回答

0

打印語句的順序將是字典序sored作爲無圖地圖,打印排序後的輸出。

+0

有什麼可能的出路嗎? – user3856196

+0

答案不是相對於問題而且不是,它不會按字典順序排列, – grisha