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

STL STACK как с ним работать? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ С чего начать? http://www.cyberforum.ru/cpp-beginners/thread1063209.html
Добрый день ребята! Несколько месяцев занимаюсь программированием на C/C++. Начинал я, как это обычно бывает с консольки... Но теперь хочется нового - интерфейс. Хочу писать для конечных...
C++ Мониторинг каталога на предмет изменения содержимого Нужно написать функция (или подпрограмму) которая мониторит каталог. Если какой либо файл в каталоге изменился (поменялся размер, содержание или атрибут), то должна быть вызвана функция, которая... http://www.cyberforum.ru/cpp-beginners/thread1063208.html
C++ unsigned на плюсах
unsigned на плюсах, помогите разобраться, когда её нужно юзать, а когда нет) та и для чего она впринцепе)
Функция умножений матриц C++
В чем ошибка? Не пойму как решить. #include <iostream> using namespace std; void mtx(int a,int b, int m1,int n1,int m2,int n2,int c){ if(n1==m2){ for(int i=0;i<m1;i++){ for(int...
C++ Матрицы. Определить индекс стобца, среднее арифметическое элементов которого максимально http://www.cyberforum.ru/cpp-beginners/thread1063192.html
Дана прямогульная матрица b. Определить индекс стобца. среднее арифметическое жлементов которого максимально. Если таких столбцов несколько, то выдать наименьший из их индексов, жлементы матрицы...
C++ сумма разность целых неотрицательных чисел Найти сумму разность целых неотрицательных чисел, применить рекурсию. вот примеры, допускаемых входных цепочек: 0-1-1-1-1; 000; 1-23-456+7890 У меня неправильно высчитывает, в чем причина?... подробнее

Показать сообщение отдельно
Alex566
240 / 152 / 18
Регистрация: 03.04.2013
Сообщений: 317
05.01.2014, 22:44
Хм.. Глянул на объявление стека, действительно
C++
1
2
3
template<class _Ty,
    class _Container = deque<_Ty> >
    class stack
и второй параметр шаблона стандартно принимает значение deque<тип первого параметра>.
stack<float,deque<float>> эквивалентно stack<float>
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <stack>
#include <deque>
#include <iostream>
#include <iterator>
using namespace std;
 
int main()
{
    stack<float> s;
    for (short i = 0; i < 5; i++)
        s.push(i);
    deque<float> d = s._Get_container();
    copy(d.begin(), d.end(), ostream_iterator<float>(cout, " "));
    cout << endl;
    system("pause");
    return 0;
}
Но здесь не обойтись без использования контейнера deque, а создателю темы по заданию нужно работать с стеком. Хотя другого варианта не вижу.

Добавлено через 4 минуты
Хотя..
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stack>
#include <iostream>
#include <iterator>
using namespace std;
 
int main()
{
    stack<float> s;
    for (short i = 0; i < 5; i++)
        s.push(i);
    copy(s._Get_container().begin(), s._Get_container().end(), ostream_iterator<float>(cout, " "));
    cout << endl;
    system("pause");
    return 0;
}
Добавлено через 3 минуты
Ну или
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <stack>
#include <iostream>
#include <iterator>
using namespace std;
 
int main()
{
    stack<float> s;
    for (short i = 0; i < 5; i++)
        s.push(i);
    for (deque<float>::const_iterator i = s._Get_container().begin(); i < s._Get_container().end(); i++)
        cout << *i << ' ';
    cout << endl;
    system("pause");
    return 0;
}
Добавлено через 9 минут
Цитата Сообщение от AnDrew_LP Посмотреть сообщение
Но решение все же есть)
Но тогда это решение не поможет организовать удаление, поскольку с помощью _Get_container вы переприсвоили значения стека деку. И удаляемые элементы будут удалятся не с стека, а с нового контейнера дека. А s._Get_container().begin() возвращает константный итератор по которому удаление сделать тоже не выйдет.
Разве что очистить стек, удалить указанные элементы с дека и присвоить их значение стеку.
1
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru