2

キーに 4 つの値を持つマルチマップを宣言するには、どの構文を使用すればよいですか?

sc_core sc_time 値の後にunsigned int型からさらに 2 つの値を追加したいと思います。

      std::multimap<std::string, std::pair<sc_core::sc_time, sc_core::sc_time> > 

ありがとう

4

1 に答える 1

5

そのためにタプルを使用できます。

std::tuple<key_type1, key_type2, key_typ3, key_typ4> 

例えば:

#include <map>
#include <string>
#include <tuple>

int main(int argc, char* argv[])
{
    std::map<std::tuple<int, int, float, float>, std::string> myMap;  // if you meant 4 values as a key
    std::map<std::string, std::tuple<int, int, float, float>> myMap2; // if you meant 4 values for each string key

    return 0;
}

また、マップを宣言するときは、キーのテンプレート引数が最初に、次に値の型が続くことに注意してください (こちらを参照)。あなたの投稿はあいまいに定式化されていたので、4 つの値がキーなのか値なのかわからなかったので、両方の可能性を示しました。

編集:Jamin Grayがうまく指摘したように、typedefを使用してこの計り知れないほど長い型を短縮できます:

typedef std::tuple<int, int, float, float> MyKeyType;

これが完了したらMyKeyType、代わりにコードで使用できます。

于 2013-07-07T02:14:41.103 に答える