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

Как реализовать стек, хранящий разные типы данных одновременно? - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Нарушения прав доступа при чтении http://www.cyberforum.ru/cpp-beginners/thread1695022.html
Всем доброй ночи! Пишу курсовую и появилась проблема: нарушения прав доступа при чтении. Проверил отладчиком и нашел где ошибка, но в чем она заключается так и не понял. Подскажите, пожалуйста. Вот код(2 класса): #include "StdAfx.h" #include "Bank.h" Bank::Bank(void) : name(_T("")) , capital(0) , bankomat(false)
C++ В матрице заменить заданные строку и столбец нулями В данной матрицы A (N , N ) заменить k - ю строчку и р - первый столбец нулями , кроме элемента , что находится на их пересечении . N = 5 . Номера столбца и строки вводятся с клавиатуры.с кодом пожалуйста http://www.cyberforum.ru/cpp-beginners/thread1695021.html
C++ Явный метод Адамса для систем ОДУ
Нужно решить систему ОДУ явным методом Адамса 4-го порядка. Не могу придумать, как реализовать этот метод именно для системы. Может кто-нибудь может помочь или подсказать? #include <iostream> #include "math.h" using namespace std;
C++ Создать программу, которая позволяет читать по строкам текстовые файлы C++
1. Создать программу, которая позволяет с помощью потоковых библиотек ввода / вывода (библиотеки iostream и др.) Считывать по строкам текстовые файлы, сохранять считанные строки в оперативной памяти, модифицировать их и выводить на экран. 2. Дополнить программу возможностью выбора пользователем любого текстового файла с текущей директории. 3. С помощью потокового ввода / вывода выводить на...
C++ Объяснить, что происходит в данном фрагменте кода (матрицы) http://www.cyberforum.ru/cpp-beginners/thread1694983.html
Вообщем столкнулся с первой проблемой в изучении данного языка (с++). Мой мозг просто отказывается понимать вот эти строчки и их результат. int j, dd; //двухмерный массив for (i = 0; i < 4; i++) for (j = 0; j < 6; j++)dd = i + j + 12; // расчет элементов cout << "\n "; for (j = 0; j < 6; j++)cout << " " << j; for (i = 0; i < 4; i++) { cout << "\n " << i; for (j = 0; j < 6;...
 

Показать сообщение отдельно
hoggy
5114 / 2115 / 403
Регистрация: 15.11.2014
Сообщений: 4,800
Завершенные тесты: 1
26.03.2016, 13:14     Как реализовать стек, хранящий разные типы данных одновременно?
Цитата Сообщение от ChadloveMary Посмотреть сообщение
стек нужно реализовать на основе односвязного/двусвязного списка. Я так понял, что у нас должен быть класс являющийся узлом стека, и уже второй класс будет являться собственно стеком, но как реализовать поддержку разных типов данных элементов одновременно? то есть у нас стек может выглядеть допустим так:
1 элемент = 25
2 элемент = "afefearg"
...

как то так:
http://rextester.com/JFH17939
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
#include <boost/any.hpp>
#include <iostream>
#include <stack>
 
 
using stack = std::stack<boost::any>;
 
void view(const stack&);
 
int main()
{
    std::cout << "Hello, world!\n";
    
    stack mystack;
    
    mystack.emplace(10);
    mystack.emplace( std::string( "afefearg") );
    
    view(mystack);
}
 
void view(const stack& src)
{
    stack s = src;
    while(!s.empty())
    {
        const auto el = s.top();
        s.pop();
        
        if( el.type() == typeid(int) )
            std::cout << boost::any_cast<int>(el) 
                << std::endl;
        else if (el.type() == typeid(std::string))
            std::cout << boost::any_cast<std::string>(el) 
                << std::endl;
    }
}
суть в том, что это - самый обычный стек,
просто в качестве его элементов выступает тип,
который может принимать объекты
любого другого типа.
 
Текущее время: 06:59. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru