Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/8: Рейтинг темы: голосов - 8, средняя оценка - 5.00
Sasha760
1 / 1 / 1
Регистрация: 03.05.2013
Сообщений: 27
#1

Специализация шаблона класса

05.05.2013, 22:08. Просмотров 1388. Ответов 3
Метки нет (Все метки)

Имеется задание:
Создать свой шаблонный класс – динамический массив (myvector). Создать методы этого класса. Инстанцировать для своего класса, представляющего собой строку, изготовленную из STL контейнера vector<char> (с определением в нем операций, необходимых для сортировки, в частности, операторов сравнения).

Первая часть понятна, но вторая не очень. Что имеется ввиду под инстанцировать? Создать специализацию для шаблона класса? И что значит представляющего собой строку? Как это должно выглядеть приблизительно?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
#include<iostream>
#include<time.h>
#include<stdlib.h>
 
using namespace std;
template<typename T> class myvector
{
private:
    int size;
    int count;
    T* p;
public:
    myvector (int s = 10)
{
    size=s;
    count=0;
    p = new T[size];
    srand(time(0));
    for(int i=0;i<size;i++)
    p[i]=rand()%100;
}
void show()
{ 
    for(int i = 0; i<size; ++i)        
    cout << p[i] << ' ';
    cout << endl;
}
 
~myvector(){delete[] p;cout<<"memory is free"<<endl;}
};
int main()
{
    myvector<int> a1(2),a2(4);
}
Класс-шаблон динамический создал, методы тоже(тут убрал чтобы не нагромождать), что делать дальше?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2013, 22:08
Ответы с готовыми решениями:

Явное создание экземпляра класса и явная специализация шаблона класса
Всем добрый день! Не могу разобраться - эти две технологии дают один и тот же...

Полная специализация шаблона класса
Всем плотный хайль, увидел вот такие слова: Я не понимаю смысл второго...

Явная специализация шаблона класса и ее методы
На 93 строке явная специализация шаблона класса под char. Но я нигде не могу...

Для чего нужна частичная специализация шаблона класса?
Доброго времени суток объясните пожалуйста зачем нужна частичная специализация...

специализация шаблона
начал разбираться с шаблонами. если есть структура, и одна функция именно с int...

3
Tulosba
:)
Эксперт С++
4747 / 3241 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
05.05.2013, 22:47 #2
Цитата Сообщение от Sasha760 Посмотреть сообщение
Что имеется ввиду под инстанцировать? Создать специализацию для шаблона класса?
Когда шаблонный класс используется, для него задается конкретный тип (или несколько типов, в зависимости от кол-ва параметров шаблона). Это и называется инстанцирование шаблона. Т.е. использование шаблона.
Специализация же подразумевает некоторое особенное поведение шаблона для какого-то конкретного типа параметра.

По заданию, как я понял, Вам нужно сделать:
1. Шаблонный класс
2. Свой класс "строка" (на базе std::vector<char>)
3. Инстанцировать шаблонный класс классом "строка".
0
Sasha760
1 / 1 / 1
Регистрация: 03.05.2013
Сообщений: 27
05.05.2013, 23:44  [ТС] #3
Tulosba, так я создал класс строка, но что делать дальше. Как инстанцировать шаблонный класс классом "строка"?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class stroka
{
private:int size;
public:  vector <char> bukvi;
         stroka(int s=3)
         {
             size=s;
             for(int i=0;i<size;i++)
                 bukvi.push_back(rand()% 26 + 'A');
         }
        void show()
         {
             for(int i=0;i<size;i++)
                 cout<<bukvi[i]<<" ";
             cout<<endl;
         }
 
};
и видимо мне нужно перегрузить оператор сравнения в этом классе
0
Tulosba
:)
Эксперт С++
4747 / 3241 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
06.05.2013, 07:09 #4
Цитата Сообщение от Sasha760 Посмотреть сообщение
Tulosba, так я создал класс строка, но что делать дальше. Как инстанцировать шаблонный класс классом "строка"?
Где-нибудь в main() создаете объект и используете его:
C++
1
myvector<stroka> mvs;
Цитата Сообщение от Sasha760 Посмотреть сообщение
и видимо мне нужно перегрузить оператор сравнения в этом классе
Да.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2013, 07:09

специализация шаблона
Добрый день! Хотелось бы сделать шаблонную функцию, у которой будет различная...

Специализация шаблона
Здравствуйте! Задача: Создайте шаблонную функцию maxn(), которая принимает...

Специализация шаблона
Привет, у меня есть вот такой шаблон дерева: template &lt;typename T = int&gt; ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru