Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2011, 21:53   #1
Studentka_:)
 
Регистрация: 16.03.2010
Сообщений: 3
По умолчанию копирование из контейнера STL в мой класс SET

Добрый вечер!
Проблема такая... Есть класс SET (обыкновенное множество), необходимо написать конструктор, который копирует элементы из какого-то контейнера стандартной библиотеки шаблонов в мой класс SET.

Код:
template <typename T>
class SET{
       private:
         unsigned int _size;
         T *m;             
              
      public:
         SET();  
         SET(T element);
        template <typename P> SET( const P &stl );  
         SET(const SET&);
         ...   //остальные функции
Т.о. проблема как написать конструктор который создает объект, который содержит элементы из STL контейнера P:
template <typename P> SET( const P &stl );

Я знаю, что это можно легко сделать с помощью итератора (P::iterator) для list, vector i set. Но например в stack итератора нет... Да и как копировать из bitset у меня тоже идей нет...
Единственное, что мне приходит в голову, написать для каждого контейнера свой конструктор, но может существует лучшее решение?

(Да, при написании класса нельзя было использовать STL, поэтому использовала массив T *m...)

Спасибо огромное всем кто откликнется!

Вот к примеру функция, которая работает для list, set, vector:
Код:
template <typename T> 
       template<typename P> SET<T>::SET(const P &stl){
                   _size=0; m=0; 
                   typename P::const_iterator it=stl.begin(), k=stl.end(); 
                   for(it; it!=k; ++it)
                         (*this)+(*it); // существует operator+ для добавления элемента 
                                        
}

Последний раз редактировалось Studentka_:); 11.04.2011 в 22:01.
Studentka_:) вне форума Ответить с цитированием
Старый 12.04.2011, 03:11   #2
malinoff
Форумчанин
 
Аватар для malinoff
 
Регистрация: 08.01.2010
Сообщений: 205
По умолчанию

Почитайте про специализацию шаблонов классов. Например, Павловская, С/С++ Программирование на языке высокого уровня.
Если помог - кликни на значок весов под аватаром.
malinoff вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
STL в QT конфликтует с STL в Borland nvrrus C++ Builder 0 31.03.2011 10:51
Файловый ввод/вывод STL контейнера указателей farynaa Помощь студентам 0 21.05.2010 22:29
[за $$$] сделать лабораторную на С++ (контейнерный класс set) velvetdust Фриланс 3 18.11.2009 16:27
Мой класс SunKnight Общие вопросы Delphi 2 02.05.2008 14:02