必要なのは辞書か連想配列だけです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();
};
ベストアンサー1
C++11 標準では統一された初期化が導入され、コンパイラがサポートしていればこれがはるかに簡単になります。
//myClass.hpp
class myClass {
private:
static const map<int,int> myMap;
};
//myClass.cpp
const map<int,int> myClass::myMap = {
{1, 2},
{3, 4},
{5, 6}
};
参照このセクションはProfessional C++から、unordered_maps 上。