Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Sasha760
1 / 1 / 0
Регистрация: 03.05.2013
Сообщений: 27
#1

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

05.05.2013, 22:08. Просмотров 1218. Ответов 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);
}
Класс-шаблон динамический создал, методы тоже(тут убрал чтобы не нагромождать), что делать дальше?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.05.2013, 22:08     Специализация шаблона класса
Посмотрите здесь:

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

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

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

Специализация шаблона - C++
Привет, у меня есть вот такой шаблон дерева: template &lt;typename T = int&gt; class Tree{ struct TreeItem{ // элемент дерева ...

Специализация шаблона - C++
Пытаюсь специализировать шаблон для типа float, но не получается. В чем проблема? Компилятор: 1&gt;TemplateArr.obj : error LNK2005:...

Специализация операции шаблона - C++
Доброго времени суток. Имеется шаблон: template&lt;class Type&gt;class Figures { /*...*/ public: /*...*/ void...

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

По заданию, как я понял, Вам нужно сделать:
1. Шаблонный класс
2. Свой класс "строка" (на базе std::vector<char>)
3. Инстанцировать шаблонный класс классом "строка".
Sasha760
1 / 1 / 0
Регистрация: 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;
         }
 
};
и видимо мне нужно перегрузить оператор сравнения в этом классе
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.05.2013, 07:09     Специализация шаблона класса
Еще ссылки по теме:

Явная специализация шаблона - C++
Столкнулся с проблемой при изучении шаблонов. Задача: написать шаблонную функцию, которая принимает в качестве аргумента массив...

Частичная специализация шаблона - C++
Доброго всем времени суток! Помогите разобраться в следующей ситуации. Есть шаблон класса #include &lt;iostream&gt; using...

Явная специализация шаблона - C++
Здравствуйте. Не совсем разобрася с сабжем. Например, если есть кусочек кода: template &lt;typename T&gt; void func(T &amp;blue, T &amp;red); ...

Специализация шаблона функции - C++
Как сделать специализированную функцию шаблон на тип int? У меня что-то не получается ..

Явная специализация шаблона - C++
Здравствуйте, подскажите, пожалуйста, почему не выполняется неявное приведение фактических параметров к формальным при вызове функции для...

Почему не срабатывает специализация шаблона? - C++
#include &lt;iostream&gt; #include &lt;clocale&gt; using namespace std; struct box { char mak; float m; float n; float y; float...


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

Или воспользуйтесь поиском по форуму:
Tulosba
:)
Эксперт С++
4393 / 3236 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
06.05.2013, 07:09     Специализация шаблона класса #4
Цитата Сообщение от Sasha760 Посмотреть сообщение
Tulosba, так я создал класс строка, но что делать дальше. Как инстанцировать шаблонный класс классом "строка"?
Где-нибудь в main() создаете объект и используете его:
C++
1
myvector<stroka> mvs;
Цитата Сообщение от Sasha760 Посмотреть сообщение
и видимо мне нужно перегрузить оператор сравнения в этом классе
Да.
Yandex
Объявления
06.05.2013, 07:09     Специализация шаблона класса
Ответ Создать тему
Опции темы

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