Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
1 / 1 / 1
Регистрация: 03.05.2013
Сообщений: 27
1

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

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

Author24 — интернет-сервис помощи студентам
Имеется задание:
Создать свой шаблонный класс – динамический массив (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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
05.05.2013, 22:08
Ответы с готовыми решениями:

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

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

Специализация шаблона члена класса. Как?
Всем привет. Прошу помощи по шаблонам C++. Есть такой код: #include &lt;iostream&gt; ...

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

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

По заданию, как я понял, Вам нужно сделать:
1. Шаблонный класс
2. Свой класс "строка" (на базе std::vector<char>)
3. Инстанцировать шаблонный класс классом "строка".
0
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
:)
Эксперт С++
4773 / 3267 / 497
Регистрация: 19.02.2013
Сообщений: 9,046
06.05.2013, 07:09 4
Цитата Сообщение от Sasha760 Посмотреть сообщение
Tulosba, так я создал класс строка, но что делать дальше. Как инстанцировать шаблонный класс классом "строка"?
Где-нибудь в main() создаете объект и используете его:
C++
1
myvector<stroka> mvs;
Цитата Сообщение от Sasha760 Посмотреть сообщение
и видимо мне нужно перегрузить оператор сравнения в этом классе
Да.
0
06.05.2013, 07:09
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
06.05.2013, 07:09
Помогаю со студенческими работами здесь

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

Специализация шаблона
Всем доброго вечера! Возникает непонятная ошибка при создании специализации родового класса cl. В...

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

Специализация шаблона
Пытаюсь специализировать шаблон для типа float, но не получается. В чем проблема? Компилятор:...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru