1. ホーム
  2. c++

[解決済み] C++でプライベートな静的constマップを初期化する方法は?

2022-08-11 17:35:25

質問

辞書か連想配列だけでいい string => int .

この場合、タイプマップC++があります。

しかし、私はすべてのインスタンスに対して1つのマップしか必要とせず(-> static)、このマップを変更することはできません(-> const)。

ブーストライブラリでこのような方法を発見しました。

 std::map<int, char> example = 
      boost::assign::map_list_of(1, 'a') (2, 'b') (3, 'c');

このライブラリを使用しない他の解決策はありますか? このようなことを試したことがありますが、マップの初期化には常に何らかの問題があります。

class myClass{
private:
    static map<int,int> create_map()
        {
          map<int,int> m;
          m[1] = 2;
          m[3] = 4;
          m[5] = 6;
          return m;
        }
    static map<int,int> myMap =  create_map();

};

どのように解決するのですか?

#include <map>
using namespace std;

struct A{
    static map<int,int> create_map()
        {
          map<int,int> m;
          m[1] = 2;
          m[3] = 4;
          m[5] = 6;
          return m;
        }
    static const map<int,int> myMap;

};

const map<int,int> A:: myMap =  A::create_map();

int main() {
}