[英]Map enum with values without using enum twice
我有一個像這樣的枚舉類:
enum Type{ First, Second, Third};
我需要將它們映射到一些值,例如:
std::map<Type, std::pair<int, float>> mp{
{First, std::make_pair(1, 8.)},
{Second, std::make_pair(5, 2.)},
{Third, std::make_pair(3, 7.)}
};
這種方法的問題是,當我想向枚舉添加新值(比如元素“第四”)時,我必須同時更新枚舉類型和映射。 如何解決這個問題?
您可以在運行時而不是在編譯時填充map
,例如:
enum Type{ First, Second, Third, NumberOfTypes };
std::map<Type, std::pair<int, float>> mp;
...
// during program startup...
for(int i = First; i < NumberOfTypes; ++i) {
mp.emplace(static_cast<Type>(i), std::make_pair(i, static_cast<float>(i)));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.