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

Очередь из разнородных элементов - C++

Восстановить пароль Регистрация
 
eugrita
3 / 4 / 0
Регистрация: 18.11.2009
Сообщений: 406
27.05.2011, 06:19     Очередь из разнородных элементов #1
Есть такая задача:
Моделировать очередь (руками), в качестве элементов которой могут использоваться числа и слова. Операции: добавление элемента, удаление элемента, печать элементов. Создать класс - потомок, который содержит процедуру сортировки слов по алфавиту. Тестировать полученную модель. В отчете представить структуру использованных классов и обосновать выбранн структуру представления данных
-------------------------------------------------------------------------------------------
Мне непонятна вообще технология подхода к ее решению. Ну скажем, очередь можно смоделировать как "руками" так и с помощью STL. Но разнородные элементы? Пытался найти в инете подходы к этому
Предлагают создать список(в нашем случае можно очередь) из указателей общего вида типа void . Код
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class GenericList // список указателей общего вида void *
{
public:
    void addToList (void * newElement);
    void * firstElement();
private:
    GenericLink * firstLink;
};
class GenericLink
{
public:
    void    * value;
    GenericLink * nextLink;
};
Теперь там предлагают " определить подкласс класса общего вида и изменить типы аргумента и результата в методах, возвращающих элемент списка. В любом случае фактическую работу выполняет родительский класс."
C++
1
2
3
4
5
6
7
8
9
10
11
12
class WindowList : public GenericList
{
public:
    void addToList (Window * newElement)
     {
      GenericList::addToList (newElement);
     }
    Window * firstElement ()
     {
      return (Window *) GenericList::firstElement;
     }
};
Но далее в том же источнике гоаорится "Но реализация требует определения подклассов как для класса List, так и для класса Link, а также, вероятно, создания новых классов-итераторов"
Годится и наилучший ли это подход к решению сформулированной задачи в моем случае?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.05.2011, 06:19     Очередь из разнородных элементов
Посмотрите здесь:

C++ Очередь из разнитипных элементов
C++ Очередь С++ Проблема с удалением элементов класса очереди
C++ Добавление элементов в очередь
Задача на очередь (вывод сообщения, что очередь пуста) C++
Составьте программу, которая создает очередь из произвольного количества элементов C++
C++ Составьте программу, которая создает очередь из произвольного количества элементов
C++ Очередь (сделать очередь, чтобы добавляло, удаляло, читало. Не STL.)
C++ Реализовать очередь с операциями вставки и удаления элементов
C++ Реализовать добавление элементов в очередь
C++ Составьте программу, которая создает очередь из произвольного количества элементов.
Составить программу, которая создает очередь из произвольного количества элементов C++
Изменить удаление и добавление элементов в очередь по правилу FIFO. C++

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Nameless One
Эксперт С++
 Аватар для Nameless One
5759 / 3408 / 255
Регистрация: 08.02.2010
Сообщений: 7,393
27.05.2011, 09:35     Очередь из разнородных элементов #2
eugrita, немного не понял. Нам нужно в очереди хранить одновременно и строки, и числа? Или наша очередь в один момент времени может хранить только строки, а в другой - только числа?
pito211
 Аватар для pito211
186 / 173 / 8
Регистрация: 22.03.2010
Сообщений: 612
27.05.2011, 11:19     Очередь из разнородных элементов #3
я понял так, что тебе надо хранить элементы разного типа в контейнере? вот я чё то наколбасил, вроде работает даже

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
42
43
44
45
46
47
48
49
50
51
52
53
#include "stdafx.h"
#include <iostream>
#include <list>
#include <vector>
#include <string>
using namespace std;
 
class ListItem
{
private:
    void*       value;
public:
    template <typename T>
    ListItem(const T& Q)
    {
        T* tmp = new T(Q);
        value = (void*)tmp;
    }
 
    void*   operator*()
    {
        return value;
    }
};
 
int main()
{
 
    vector<ListItem> test;
    string tmp("yrtyrtyrt");
 
    test.push_back(34);
    test.push_back(97);
    test.push_back(tmp);
    tmp = "dfhdheherh";
    test.push_back(tmp);
    tmp = "dfgdfg";
    test.push_back(tmp);
 
    for (int i = 0; i != 2; i++)
    {
        cout << *static_cast<int*>(*(test[i]));
    }
 
    for (int i = 2; i != 5; i++)
    {
        cout << *static_cast<string*>(*(test[i])) << endl;
    }
 
 
 
    return 0;
}
ForEveR
Модератор
Эксперт С++
 Аватар для ForEveR
7933 / 4715 / 318
Регистрация: 24.06.2010
Сообщений: 10,525
Завершенные тесты: 3
27.05.2011, 11:22     Очередь из разнородных элементов #4
pito211, Use boost::any...
Yandex
Объявления
27.05.2011, 11:22     Очередь из разнородных элементов
Ответ Создать тему
Опции темы

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