次のコードは、STDに基づいてコンテナを表します::ベクトルテンプレートとSTL
template <typename Item>
struct TList
{
typedef std::vector <Item> Type;
};
template <typename Item>
class List
{
private
typename TList <Item>::Type items;
....
}
int main()
{
List <Object> list;
}
は、それがのstd ::ベクトルをテンプレート化し、一般的なコンテナ、そのようなものを作成することは可能ですか?
template <typename Item, typename stl_container>
struct TList
{
typedef stl_container<Item>;
};
ここで、stl_containerはstd :: vector、std :: list、std :: set ...を表します。私は創造の時にコンテナのタイプを選びたいと思っています。あなたの答えのための
List <Object, std::vector> list; //vector of objects, not a real code
List <Object, std::vector> list; //list of objects, not a real code
おかげで...
更新質問:
は、私は、次のコードを試みたが、エラーがある:
#include <vector>
template <typename Item, typename Container>
struct TList
{
typedef typename Container <Item>::type type; //Error C2059: syntax error : '<', Error C2238: unexpected token(s) preceding ';
};
template <typename T>
struct vector_container
{
typedef std::vector<T> type;
};
int _tmain(int argc, _TCHAR* argv[])
{
TList <int, vector_container> v;
TList <int, map_container> m;
}
このクラスは誰が使用しますか?なぜ 'List'は' typedef vector/list/set- items'を使用しませんか?コンテナ型と値型を指定すると、これらの2つをまとめてクラスの目的は何でしょうか? –
UncleBens
Re:編集しても、 'List> list;'などと書くことができません。 –
UncleBens