Generic Programming with C++ Template
■ このスレッドは過去ログ倉庫に格納されています
0682681
NGNGtemplate<class T>
class ImplList
{
public:
typedef std::list<T> cont_t;
typedef cont_t::iterator Iter;
typedef cont_t::size_type SizeType;
private:
cont_t c_;
public:
void PushFront(T val){
c_.push_front(T);
}
void PushBack(T val){
c_.push_back(T);
}
void Erase(T val){
c_.remove(T);
}
T& operator[](SizeType n){
Iter it = c_.begin();
for (int i=0;i<n;++i){
++it;
}
return *it;
}
}
// Generic Sequence Container
template
<
class T,
template <class> class ImplContainer = ImplVector
>
class GSC : public ImplContainer<T>
{
};
GSC<int> gsc;
gsc.PushBack(3);
gsc.PushFront(5);
gsc.Erase(3);
int a = gsc[0];
こんな感じで、効率の良し悪しは無視して、思いつく限りのメンバ関数を
用意しておけばいいんじゃないかなと。後で「vector実装でOKだと思ってたけど、
list実装の方がよかったな〜」ってときは、GSC<int>って定義をGSC<int,ImplList>に
変えるだけです。使ってる部分のコードは全く変更しなくていい、ってのが当然の目標。
……とかいって、どっかですでに開発されてましたー、じゃ虚しいんで、
存在を知ってる人がいたら、さっさとツッコミ入れてくださいね。
■ このスレッドは過去ログ倉庫に格納されています