0 / 0 / 1
Регистрация: 01.07.2015
Сообщений: 6
1

Разработка шаблонного класса-контейнера

01.07.2015, 16:06. Показов 767. Ответов 1
Метки нет (Все метки)

Помогите пожалуйста разобраться! решаю задачу и не могу найти солюшен, всё очень просто, вот задача:

Необходимо разработать класс контейнера, реализующий приведенный ниже интерфейс. При разработке приветствуется использование STL.
C++
1
2
3
4
5
6
7
class ElemNotFound {};
template < class ElemType, class IndexType > class IContainer
{
public:
   virtual const ElemType& GetElem( const IndexType& index ) const throw ( ElemNotFound ) = 0;
   virtual void PutElem( const IndexType& index, const ElemType& elem ) throw () = 0;
};
Решение надо представить под Windows.

Я сделал эскиз, но он не компилируется студией ни в какую, и я в принципе в нем не до конца уверен, что надо изменить, что улучшить??

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
35
36
37
38
39
40
#include "stdafx.h"
#include <string>
#include <iostream>
 
//class ElemNotFound {};
template <class ElemType, class IndexType> class IContainer
{
private:
    ElemType arr [IndexType];
public:
    IContainer() {};
    IContainer(const ElemType & elem, const IndexType & index);
   virtual const ElemType& GetElem( const IndexType& index ) /*const throw ( ElemNotFound ) = 0*/;
   virtual void PutElem( const IndexType& index, const ElemType& elem ) /*throw () = 0*/;  //первый это номер элемента в массиве, второй сам элемент
};
template<class ElemType, class IndexType=int>
IContainer<ElemType, IndexType>::IContainer(const ElemType & elem, const IndexType & index)
{
    for(int i=0; i<index; i++)
        arr[i]=elem;
}
template<class ElemType, class IndexType>
void IContainer<ElemType, IndexType>::PutElem(const IndexType& index, const ElemType& elem)
{
    arr[index]=elem;
}
template<class ElemType, class IndexType>
const ElemType& IContainer<ElemType, IndexType>::GetElem(const IndexType & index)
{
    return arr[index];
}
 
int main()
{
    IContainer<double, int> ob (5, 7);
    IContainer<std::string, int> blablabla("google", 6);
    blablabla.PutElem(4, "duck");
    //std::cout<<blablabla.GetElem(3);
    return 0; 
}
Добавлено через 2 часа 41 минуту
все стало компилироваться, я не могу разобраться что они хотят видеть во втором параметре, зачем он нужен вот здесь


C++
1
2
3
4
template <class ElemType, class IndexType> class IContainer
{
private:
ElemType arr [12];

и как сделать так чтобы я создавал массивы нужных мне размеров а не заданных изначально.
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
01.07.2015, 16:06
Ответы с готовыми решениями:

Хочу перегрузить iterator для пользовательского шаблонного класса контейнера
Осваивал шаблонные параметры шаблоны на примере шаблонов контейнерных классов, и открыл для себя...

Как корректно передать в метод шаблонного класса объект шаблонного класса в качестве параметра?
header.h template &lt;class T&gt; class MyVector { public: void swap(MyVector&lt;T&gt;Vector); }...

Разработка класса контейнера
День добрый. В общем у меня есть программа, программный код приведу ниже. Класс Очередь...

Разработка шаблонного класса Set для работы с множеством символов
Требуется разработать шаблонный класс Set для работы с множеством символов. Класс должен содержать...

1
Эксперт С++
8563 / 4137 / 910
Регистрация: 15.11.2014
Сообщений: 9,338
01.07.2015, 22:02 2
Цитата Сообщение от The New Guy Посмотреть сообщение
и как сделать так чтобы я создавал массивы нужных мне размеров а не заданных изначально.
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
35
36
37
38
39
40
41
#include <iostream>
#include <cassert>
 
template <class ElemType, size_t Elements> 
struct Container
{
    Container() {}
    
    template<class U>
    Container(U&& elem, const size_t count)
    {
        assert(count<=Elements);
        for(size_t i=0; i<count; ++i)
            arr[i]=elem;
    }
    
    const ElemType& GetElem( const size_t& index)
    {
        assert(index<Elements);
        return arr[index];
    }
 
    
    void PutElem( const size_t index, const ElemType& elem )
    {
        assert(index<Elements);
        arr[index]=elem;
    }
 
    
private:
    ElemType arr[Elements];
};
 
 
int main()
{
    std::cout << "Hello, world!\n";
    
    Container<int, 32> mycont(10, 32);
}
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
01.07.2015, 22:02

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

Инициализация шаблонного класса(В конструкторе класса после двоеточия вновь имя класса)
Всем доброго времени суток! Пытаюсь разобраться как работает приведенный мной код. Конкретно,...

Возможно ли создание объекта шаблонного класса в функции этого класса?
Доброго времени суток, уважаемые форумчане :) Мне по лабам задали задание - реализовать шаблон...

Чем отличается шаблонный метод класса от шаблонного класса?
Чем отличается шаблонный метод класса от шаблонного класса???????ПЛИЗ!!!!Если можно немного ссылок...


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

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

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