我有一段代码与这个非常相似:
class someclass
{
public:
enum Section{START,MID,END};
vector<Section> Full;
void ex(){
for(int i=0;i<Full.size();i++)
{
switch (Full[i])
{
case START :
cout<<"S";
break;
case MID :
cout<<"M";
break;
case END:
cout<<"E";
break;
}
}
}
};
现在想象一下,我有很多枚举类型,它们的名称更长......那么我得到的代码不是很好看,我在想是否可能将特定字符绑定到一个枚举类型,并且可以做类似这样的事情:
for(int i=0;i<Full.size();i++)
{
cout<(Full[i]).MyChar();
}
还有其他方法可以使这段代码“更漂亮”吗?
这可行吗?
std::map<Section, char>
,但我不确定在这么少的值集合下,代码会变得更加清晰。至少你可以将转换封装在一个函数中,以便重复使用。 - cdhowiestd::map
似乎有些大材小用,一个简单的数组就足够了:cout << "SME"[Full[i]]
。(但仍需要改进以提高可管理性和安全性。) - user743382