Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

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

05.05.2013, 22:08. Просмотров 1367. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Специализация шаблона класса (C++):

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

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

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

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

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

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

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

По заданию, как я понял, Вам нужно сделать:
1. Шаблонный класс
2. Свой класс "строка" (на базе std::vector<char>)
3. Инстанцировать шаблонный класс классом "строка".
0
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;
         }
 
};
и видимо мне нужно перегрузить оператор сравнения в этом классе
0
Tulosba
:)
Эксперт С++
4705 / 3240 / 297
Регистрация: 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
Привет! Вот еще темы с ответами:

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

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

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

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


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

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

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