打开迭代器

Switching on iterator

本文关键字:迭代器      更新时间:2023-10-16

我尝试将枚举元素打印为文本而不是数字。这是代码:

#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::cout<<"Res: "<<name(i)<<std::endl;不仅:name(i);

解决方案因此,如果:std::cout<<"Res: "<<std::endl; name(i);

print语句的顺序将按照字典顺序排序,作为urordered map,打印排序后的输出。