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

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

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
Sasha760
1 / 1 / 0
Регистрация: 03.05.2013
Сообщений: 27
05.05.2013, 22:08     Специализация шаблона класса #1
Имеется задание:
Создать свой шаблонный класс – динамический массив (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++
C++ Специализация шаблона
C++ специализация шаблона функции
C++ специализация шаблона
Явная специализация шаблона C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
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;
         }
 
};
и видимо мне нужно перегрузить оператор сравнения в этом классе
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
06.05.2013, 07:09     Специализация шаблона класса #4
Цитата Сообщение от Sasha760 Посмотреть сообщение
Tulosba, так я создал класс строка, но что делать дальше. Как инстанцировать шаблонный класс классом "строка"?
Где-нибудь в main() создаете объект и используете его:
C++
1
myvector<stroka> mvs;
Цитата Сообщение от Sasha760 Посмотреть сообщение
и видимо мне нужно перегрузить оператор сравнения в этом классе
Да.
Yandex
Объявления
06.05.2013, 07:09     Специализация шаблона класса
Ответ Создать тему
Опции темы

Текущее время: 18:11. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru