4

要素のベクトルのタプルを格納する可変個引数テンプレート コンテナーを作成しようとしています。このコンテナーのポイントは、すべてのベクトルの要素がすべて関連していることです。後でその相関関係を維持したいのですが、計算には必要ありません。もしよろしければ、vector_3 と何らかのタイプの ref_id を想像してみてください。

コンテナーは、ベクトルを一緒に均一に変異させるだけです。したがって、私が理解している部分は次のようになります。

template<typename ...Elems>
class container
{
    std::tuple<std::vector<Elems>...> data_;

public:
    template<typename I>
    const typename std::tuple_element<I, data_type>::type &nth_index() const
    { return std::get<I>(data_); }
};

私は挿入方法に苦労しています。私は次のようなことを考えていました:

void push_back(std::tuple<Elems...> &values)
{
    std::tuple<std::back_insert_iterator<std::vector<Elems>>...> inserters;
}

しかし、この「挿入者」タプルを初期化する方法がわかりません。私はここでさまざまな再帰テンプレートの例をstackoverflowで見てきましたが、理解するのに十分な時間、頭の中にすべてを保持することはできません.

そのようなタプルがあれば、単純な割り当てを使用できると推測していました。

inserters = values;

また、値のタプルを返すすべての配列にまたがるアクセサーを書きたいと思います。

std::tuple<Elems &...> operator[](const size_t index)
{
     ...
}

しかし、繰り返しになりますが、このタプルを初期化する方法がわかりません。

これをやりたいと思ったのは私だけではなく、それを学ぶための良いリソースが見つかりません. それまでの間、0x の元の可変個引数テンプレートの提案を消化しようとしています。洞察をいただければ幸いです。私は MSVC 2012 の実装によって制限されています。

4

2 に答える 2