Делетантский вопрос про специализацию шаблонов.. в избранное  новое горячее всё    подписка   модер. 
От: alexsy 
Дата: 27.05.08 10:18
Оценка: :)
Если я правильно понимаю специализация шаблона это, что то типа специальной доводка шаблона для конкретных типов данных..
Вот теперь объясните мне пожалуйста как специализировать шаблон STL контейнера vector допустим для указателей помещённых в boost::shared_ptr<T>.

Я что то типа такого хочу
#include <vector>
#include <boost/shared_ptr.hpp>

template< typrname Type >
std::vector< boost::shared_ptr< Type > >;


Что тут не правельно или что не дописано или вообще не так??
не исключаю вероятности перепутанной терминалогии..
Re: Делетантский вопрос про специализацию шаблонов.. в избранное  новое    модер. 
От: Bell 
Дата: 27.05.08 10:32
Оценка: +1
Здравствуйте, alexsy, Вы писали:

A>Если я правильно понимаю специализация шаблона это, что то типа специальной доводка шаблона для конкретных типов данных..

Скорее это специальная реализация для особых случаев, которая никак не связана с базовым шаблоном.

A>Вот теперь объясните мне пожалуйста как специализировать шаблон STL контейнера vector допустим для указателей помещённых в boost::shared_ptr<T>.


A>Я что то типа такого хочу

A>
A>#include <vector>
A>#include <boost/shared_ptr.hpp>

A>template< typrname Type >
A>std::vector< boost::shared_ptr< Type > >;

A>


A>Что тут не правельно или что не дописано или вообще не так??

template< typrname Type >
class std::vector< boost::shared_ptr< Type > >
{
//Реализация
};



A>не исключаю вероятности перепутанной терминалогии..


Лучше расскажи — зачем.
Любите книгу — источник знаний (с) М.Горький
Re[2]: Делетантский вопрос про специализацию шаблонов.. в избранное  новое    модер. 
От: alexsy 
Дата: 27.05.08 10:49
Здравствуйте, Bell, Вы писали:

B>Здравствуйте, alexsy, Вы писали:


A>>Если я правильно понимаю специализация шаблона это, что то типа специальной доводка шаблона для конкретных типов данных..

B>Скорее это специальная реализация для особых случаев, которая никак не связана с базовым шаблоном.

Ага Это немного проесняет вопрос.. тоесть из этого Я понял что нужно полностью реализовать новый шаблон std::vector .. Да я читал что можно специализировать отдельную функцию член..

A>>Вот теперь объясните мне пожалуйста как специализировать шаблон STL контейнера vector допустим для указателей помещённых в boost::shared_ptr<T>.


A>>Я что то типа такого хочу

A>>
A>>#include <vector>
A>>#include <boost/shared_ptr.hpp>

A>>template< typrname Type >
A>>std::vector< boost::shared_ptr< Type > >;

A>>


A>>Что тут не правельно или что не дописано или вообще не так??

B>
B>template< typrname Type >
B>class std::vector< boost::shared_ptr< Type > >
B>{
B>//Реализация
B>};
B>



A>>не исключаю вероятности перепутанной терминалогии..


B>Лучше расскажи — зачем.

Для понимания всего происходящего..
А как мне подменить или как реализовать шаблон vector для указателей размещённых в shared_prt

чтото типа такого хочу

myvector< ClassA > VClassA
А на самом деле .. std::vector<boost::shared_ptr< ClassA > > VClassA
Re[3]: Делетантский вопрос про специализацию шаблонов.. в избранное  новое    модер. 
От: Bell 
Дата: 27.05.08 11:01
Здравствуйте, alexsy, Вы писали:

B>>Лучше расскажи — зачем.

A>Для понимания всего происходящего..
A>А как мне подменить или как реализовать шаблон vector для указателей размещённых в shared_prt

A>чтото типа такого хочу


A>myvector< ClassA > VClassA

A>А на самом деле .. std::vector<boost::shared_ptr< ClassA > > VClassA

Пока нет template typedef-ов, можно как-то вот так:

template <class T>
struct myvector
{
   typedef vector<boost::shared_ptr<T> > type;
};

class Test
{
   int i_;
public:
   Test(int i) : i_(i) {}
};

int main()
{
   myvector<Test>::type vptr;
   vptr.push_back(boost::shared_ptr<Test>(new Test(1)));

   return 0;
}
Любите книгу — источник знаний (с) М.Горький
Re[4]: Делетантский вопрос про специализацию шаблонов.. в избранное  новое    модер. 
От: alexsy 
Дата: 27.05.08 11:05
Здравствуйте, Bell, Вы писали:

B>Здравствуйте, alexsy, Вы писали:


B>>>Лучше расскажи — зачем.

A>>Для понимания всего происходящего..
A>>А как мне подменить или как реализовать шаблон vector для указателей размещённых в shared_prt

A>>чтото типа такого хочу


A>>myvector< ClassA > VClassA

A>>А на самом деле .. std::vector<boost::shared_ptr< ClassA > > VClassA

B>Пока нет template typedef-ов, можно как-то вот так:


B>
B>template <class T>
B>struct myvector
B>{
B>   typedef vector<boost::shared_ptr<T> > type;
B>};

B>class Test
B>{
B>   int i_;
B>public:
B>   Test(int i) : i_(i) {}
B>};

B>int main()
B>{
B>   myvector<Test>::type vptr;
B>   vptr.push_back(boost::shared_ptr<Test>(new Test(1)));

B>   return 0;
B>}
B>


Ага понял .. спасибо
Re: Делетантский вопрос про специализацию шаблонов.. в избранное  новое    модер. 
От: Erop 
Дата: 27.05.08 11:28
Здравствуйте, alexsy, Вы писали:

A>
A>template< typrname Type >
A>std::vector< boost::shared_ptr< Type > >;
A>


A>Что тут не правельно или что не дописано или вообще не так??

A>не исключаю вероятности перепутанной терминалогии..

Посмотри определения шаблонов, которые используешь и специализируешь...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском