次の構造を使用して、「最初の」タイプのstd::pairをテンプレート化したい
template <typename T>
struct TPair
{
typedef std::pair <T, short> Type;
};
そして、そのようなペアのベクトルを作成します。
template <typename T>
struct TPairs
{
typedef std::vector <TPair <T> > Type;
};
しかし、このコードは一般的な使用法のためにねじ込まれているようであり、不快です:
TPair <double> ::Type my_pair (1.0, 0 ); //Create pairs
TPair <double> my_pair2 (1.0, 0 ); //Create object, needs a constructor
TPairs <double> ::Type pairs; //Create vector
TPairs <double> pairs2; //Create object
pairs.push_back(my_pair); //Need a constructor
pairs2.push_back(my_pair); //No push_back method for the structure...
....
もっとシンプルで快適な解決策はありますか?