mapクラスを勉強しています。
例えばなんですが map クラスに2つのキーとそのキーに対応したデータ型を指定するこ
とはできるのでしょうか?日本語になってなくてすいません…
具体的に言うと
map<int, std::string, HWND> myMap;
みたいな感じでmyMapに int と std::string を指定すると HWND が得られるというのは
できるのでしょうか?
一番簡単な方法。
int と std::string を1つの文字列にしてしまうとか。
たとえば、カンマとか適当な文字でつなげた文字列をキーにするとか。
あまり検証していないけど、こんな感じでしょうかね。
#include <iostream>
#include <string>
#include <map>
int main()
{
std::map< std::pair< int, std::string >, int > myMap;
myMap[ std::pair< int, std::string >( 1, test ) ] = 10;
myMap[ std::pair< int, std::string >( 2, test ) ] = 20;
myMap[ std::pair< int, std::string >( 1, hoge ) ] = 30;
myMap[ std::pair< int, std::string >( 3, hoge ) ] = 40;
std::cout << myMap[ std::pair< int, std::string >( 2, test ) ]
<< std::endl;
std::cout << myMap[ std::pair< int, std::string >( 1, hoge ) ]
<< std::endl;
return 0;
}
お探しのものは、こんなのですか>Boost MultiIndex Container
map<int, map<string, HWND> > とか。
返信ありがとうございます。
Blueさんの方法で解決しました。
dairygoodsさんの方法でもうまくいきました。
Boost MultiIndex Containerも調べてみます。
どうもありがとうございました。