簡體   English   中英

使用值映射枚舉而不使用枚舉兩次

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

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