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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 5.00
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
#1

Вывод очереди - C++

19.12.2013, 21:14. Просмотров 1566. Ответов 14
Метки нет (Все метки)

Здравствуйте, у меня такой вопрос, я создал очередь с помощью queue, можно ли вывести всю очередь, у меня получалось выводить только первый и последний элементы =\
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.12.2013, 21:14     Вывод очереди
Посмотрите здесь:

C++ Объявление ,инициализация ы вывод на экран двусторонней очереди
Очереди на С C++
Вывод элементов очереди на экран C++
Очереди. Каким образом считать две очереди из одного текстового файла? C++
C++ Разработать программу формирования очереди, содержащей целые числа, и упорядочивания по возрастанию элементов в этой очереди.
Объединить две очереди в одну, как создать две очереди C++
Очереди C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
max777alex
44 / 44 / 3
Регистрация: 01.02.2012
Сообщений: 822
19.12.2013, 21:32     Вывод очереди #2
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
#include <cstdio>
#include <iostream>
#include <cmath>
#include <string>
#include <queue>
using namespace std;
 
const int n = 10;
 
int main()
{
    queue<int> q;
    for(int i = 0; i < n; ++i)
    {
        int val = rand() % 10;
        q.push(val);
        cout << val << " ";
    }
    cout << endl;
 
    while(!q.empty())
    {
        int val = q.front();
        q.pop();
        cout << val << " ";
    }
    cout << endl;
 
    return 0;
}
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
19.12.2013, 21:49  [ТС]     Вывод очереди #3
Но если так сделать, то вроде после вывода все элементы удалятся =( а мне нужно что бы они оставались в программе дальше =(
max777alex
44 / 44 / 3
Регистрация: 01.02.2012
Сообщений: 822
19.12.2013, 21:50     Вывод очереди #4
тогда лучше реализовать свою очередь на массиве
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
19.12.2013, 21:53  [ТС]     Вывод очереди #5
на массиве сложновато будет, там постоянно перезаписывать его нужно, использовать при этом первый элемент, ещё и дополнительное ограничение в размерности( значит через queue никак нельзя?
max777alex
44 / 44 / 3
Регистрация: 01.02.2012
Сообщений: 822
19.12.2013, 22:00     Вывод очереди #6
нельзя, но а на массиве, что там вы собираетесь перезаписывать? если не хочется ограничиваться количеством элементов, то используйте vector
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
19.12.2013, 22:08  [ТС]     Вывод очереди #7
А его можно использовать как список? Есть функция что бы удалить первый элемент и очередь при этом сдвинулась?
max777alex
44 / 44 / 3
Регистрация: 01.02.2012
Сообщений: 822
19.12.2013, 22:12     Вывод очереди #8
а просто поддерживай указатель на начало очереди:
C++
1
2
3
4
5
6
7
8
9
10
vector<int> q;
int l = 0;
 
// добавляем == push
for(int i = 0; i < 10; ++i)
    q.push_back(i);
// top
int top = q[l]; // тут надо ифик поставить, что l < q.size()
// удаляем == pop
++l;
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
19.12.2013, 22:18  [ТС]     Вывод очереди #9
Тогда вектор всё время будет увеличиваться =\ или есть команда удаляющая первый элемент? я нашел только для удаления последнего элемента
C++
1
q.pop_back()
max777alex
44 / 44 / 3
Регистрация: 01.02.2012
Сообщений: 822
19.12.2013, 22:21     Вывод очереди #10
C++
1
2
3
4
5
6
7
8
9
10
vector<int> q;
// добавляем == push
for(int i = 0; i < 10; ++i)
    q.push_back(i);
// top
int top = q[0]; // тут надо ифик поставить, что l < q.size()
// удаляем == pop
reverse(q.begin(), q.end());
q.pop_back();
reverse(q.begin(), q.end());
но это того не стоит, переворачивание за линию ради того, чтобы сохранить память - извращение какое-то
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
19.12.2013, 22:30  [ТС]     Вывод очереди #11
Да, бида, это вообще на наркоманию похоже) Просто рациональное использование памяти бла бла бла и всё такое =\

Добавлено через 3 минуты
А можно создать список с помощью list?
max777alex
44 / 44 / 3
Регистрация: 01.02.2012
Сообщений: 822
19.12.2013, 22:32     Вывод очереди #12
да, кстати, с list можно)
а можно еще вот так сделать: создать массив, например на миллион элементов (то есть верхняя граница на количество элементов в очереди), и поддерживать два указателя r, w (r = read, w = write) - индекс, из которого мы читаем и в который мы пишем, а дальше при чтении q[r] увеличиваем r, а при записи увеличиваем w. Если указатель упирается в конец массива, то перекидываем его в начало - в итоге это зацикленная очередь
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
19.12.2013, 22:35  [ТС]     Вывод очереди #13
Да, я думал так сделать, но как истинный ленивый инженер я начал искать более простое решение проблемы=)
Я так понял, что в библиотеке list есть все те же команды, что queue и vector.
max777alex
44 / 44 / 3
Регистрация: 01.02.2012
Сообщений: 822
19.12.2013, 22:41     Вывод очереди #14
кстати, можно же вообще deque заюзать и вообще ничего не придумывать)
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.12.2013, 22:46     Вывод очереди
Еще ссылки по теме:

Очереди в С++ C++
C++ править код (создание очереди и удаление элемента очереди по усмотрению пользователя)
Очереди (С++) C++
C++ Вывод содержимого очереди. Нужен совет
C++ Извлечь из очереди начальные элементы и вывести их значения и новые адреса начала и конца очереди

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

Или воспользуйтесь поиском по форуму:
Delacroic
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 61
19.12.2013, 22:46  [ТС]     Вывод очереди #15
Оо, вообще отлично =) осталось только понять принцип работы) Благодарю)
Yandex
Объявления
19.12.2013, 22:46     Вывод очереди
Ответ Создать тему
Опции темы

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