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

Как удалить все элементы из очереди (queue)

12.09.2011, 19:10. Показов 24091. Ответов 22
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть очередь queue и в ней элементы, как удалить их все чтобы очередь осталась пустой?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
12.09.2011, 19:10
Ответы с готовыми решениями:

Удалить все парные элементы из очереди целых чисел и подсчитать их количество
Помогите написать програму есть очередь заполненая целыми числами нужно удалить все парные...

Как удалить элементы из очереди
Подскажите пожалуйста как удалить элементы из статической очереди? К примеру есть 10 элементов в...

queue удаление из очереди
Создать однонаправленную очередь с числами в диапазоне от –50 до +50. Удалить из очереди все...

Удалить элементы очереди с нечетными значениями
Добрый день, прошу помощи по динамическим структурам очередь. Имеется очередь с 8 элементами,...

22
Higher
1953 / 1219 / 120
Регистрация: 02.05.2010
Сообщений: 2,925
Записей в блоге: 2
12.09.2011, 19:12 2
C++
1
2
3
std::queue<int> qu;
while ( !qu.empty() )
  qu.pop();
Так как-то.
0
13 / 13 / 0
Регистрация: 27.12.2010
Сообщений: 83
12.09.2011, 19:14  [ТС] 3
попробуем...
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.09.2011, 19:17 4
C++
1
2
while (!my_queue.empty())
    my_queue.pop();
Добавлено через 2 минуты
Опередили меня... Тогда как вариант
C++
1
2
3
std::queue< int > q;
//.....
q.swap(std::queue< int >());
0
13 / 13 / 0
Регистрация: 27.12.2010
Сообщений: 83
12.09.2011, 19:37  [ТС] 5
а теперь как найти в это очереди максимальный элемент? кто-нить знает?
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.09.2011, 19:46 6
Вообще очередь для таких целей не предназначена, но если очень хочется, то:
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
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
 
typedef int type;
 
int main()
{
    std::queue< type > q;
 
    std::cout << "Enter queue elements: ";
 
    type elem;
 
    while (std::cin >> elem)
        q.push(elem);
 
    std::vector< type > q_copy_vec(q.size());
    std::queue< type > q_copy(q);
 
    for (size_t i = 0; i < q.size(); ++i)
    {
        q_copy_vec.push_back(q_copy.front());
        q_copy.pop();
    }
 
    if (!q.empty())
        std::cout << "Max element in q: " << *std::max_element(q_copy_vec.begin(), q_copy_vec.end()) << std::endl;
 
    return 0;
}
0
13 / 13 / 0
Регистрация: 27.12.2010
Сообщений: 83
12.09.2011, 20:22  [ТС] 7
спасибо

Добавлено через 8 минут
Блин, и последняя сложность!
У нас есть очередь с числами:
1921
125
321
Я нахожу максимальный элемент в этой очереди и вывожу его! НО! Мне нужно чтобы теперь этот максимальный элемент правильно удалился с очереди! Ну чтобы после того как я его вывел на экран дальше очередь стала вот такой:
125
321
Потом максимальный выводиться 321 и удаляется!
Остается:
125
И после того как вывели последний то сделать чтобы очередь осталась пуста! Ну чтобы она определялась:
C++
1
q.empty()
Добавлено через 14 минут
кароче, можно немного не так:
нашел другой способ решения моей задачи!
Кароче, записывать элементы нужно сразу по порядку! Ну чтобы в очереди они хранились по возрастанию...
Например вводят:
7, 3, 6!
А в очереди храниться 3, 6, 7.
Как это реализовать, если так получиться сделать то ненужно искать теперь максимальный и удалять его!
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.09.2011, 21:34 8
Записать элементы в массив, отсортировать по убыванию и с первого элемента начать запихивать элементы массива в очередь.
0
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
12.09.2011, 21:48 9
если вспомнить что std::queue это адаптер , то можно сделать такое решение поиска максимального элемента
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
#include <iostream>
#include <queue>
#include <cstdlib>
#include <cstdio>
#include <iterator>
#include <ctime>
#include <algorithm>
 
int main()
{
    std::srand(static_cast<unsigned int>(std::time(NULL)));
    std::queue<int> queue;
 
    const std::queue<int>::size_type size_queue = 10;
    const std::queue<int>::value_type max_value = 100;
 
    for (int i = 0; i < size_queue; ++i)
        queue.push(std::rand() % max_value);
 
    std::queue<int>::container_type container = queue._Get_container();
    std::cout << "Queue: " << std::endl;
    std::copy(container.cbegin(), container.cend(), std::ostream_iterator<std::queue<int>::value_type>(std::cout, " "));
    std::queue<int>::value_type max_el = *std::max_element(container.cbegin(), container.cend());
    std::cout << std::endl << "Max element: " << max_el << std::endl;
 
    std::getchar();
    return EXIT_SUCCESS;
}
0
204 / 205 / 16
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
12.09.2011, 22:07 10
Цитата Сообщение от silent_1991 Посмотреть сообщение
Опередили меня... Тогда как вариант
std::queue< int > q;
//.....
q.swap(std::queue< int >());
что-то мне подсказывает, что это не рабочий код.

C++
1
2
3
4
5
template <typename T>
void any_clear(T &val) {
    T tmp;
    std::swap(tmp, val);
}
C++
1
2
3
4
5
6
7
    std::queue<int> q;
    q.push(10);
    q.push(11);
    q.push(12);
    cout << q.size() << "\n";
    any_clear(q);
    cout << q.size() << "\n";
3
0
1
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
12.09.2011, 22:12 11
сам привел док-во что все норм
0
204 / 205 / 16
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
12.09.2011, 22:15 12
Цитата Сообщение от sandye51 Посмотреть сообщение
сам привел док-во что все норм
где норм?
0
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
12.09.2011, 22:18 13
то, что размер 0. Или это уже не является необходимым и достаточным условием пустой очереди?
0
204 / 205 / 16
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
12.09.2011, 22:19 14
Цитата Сообщение от sandye51 Посмотреть сообщение
то, что размер 0. Или это уже не является необходимым и достаточным условием пустой очереди?
а ты смотрел, что было предложено и как было реализовано на самом деле?
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.09.2011, 22:24 15
villu, и что, то, что в результате после функции очистки в очереди осталось 0 элементов, должно меня убедить, что код не рабочий?
0
Эксперт С++
2381 / 1665 / 279
Регистрация: 29.05.2011
Сообщений: 3,399
12.09.2011, 22:27 16
Ну вообще-то там заменено использование
C++
1
a.swap(b);
на
C++
1
std::swap(a, b);
я вот тоже засомневался, есть ли у queue функция swap. Но проверять было лень. И сейчас лень
0
204 / 205 / 16
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
12.09.2011, 22:29 17
Цитата Сообщение от silent_1991 Посмотреть сообщение
villu, и что, то, что в результате после функции очистки в очереди осталось 0 элементов, должно меня убедить, что код не рабочий?
ты пробовал свой код откомпилить? просто хотяб откомпилить?

Цитата Сообщение от silent_1991 Посмотреть сообщение
что код не рабочий?
мой - рабочий.

Добавлено через 32 секунды
Цитата Сообщение от grizlik78 Посмотреть сообщение
я вот тоже засомневался, есть ли у queue функция swap.
Вот! это первая ошибка из двух.
0
программист С++
860 / 600 / 147
Регистрация: 19.12.2010
Сообщений: 2,014
12.09.2011, 22:29 18
Цитата Сообщение от grizlik78 Посмотреть сообщение
есть ли у queue функция swap
C++
1
2
3
4
    void swap(_Myt&& _Right)
        {   // exchange contents with movable _Right
        c.swap(_STD move(_Right.c));
        }
0
Эксперт С++
5055 / 3115 / 271
Регистрация: 11.11.2009
Сообщений: 7,044
12.09.2011, 22:30 19
Пруф.
Миниатюры
Как удалить все элементы из очереди (queue)  
Изображения
 
0
204 / 205 / 16
Регистрация: 06.08.2011
Сообщений: 600
Записей в блоге: 1
12.09.2011, 22:33 20
C++
1
    std::swap(std::queue<int>(), val);
error: in passing argument 1 of ‘void std::swap(_Tp&, _Tp&) [with _Tp = std::queue<int>]’
0
12.09.2011, 22:33
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.09.2011, 22:33
Помогаю со студенческими работами здесь

Шаблонный класс очереди. Выводит сначала все индексы, потом все элементы
#include &lt;iostream&gt; #include &lt;conio.h&gt; using namespace std; const int SIZE=100; ...

Удаление элемента из очереди (queue) по указанному индексу
Реализовать удаление элемента из очереди по указанному индексу(queue)

Использование очереди (queue) одного класса в другом
Использование очереди (queue) одного класса в другом проблема в следующем есть класс Hospital, в...

Удалить из очереди все отрицательные числа
Создать однонаправленную очередь с числами в диапазоне от –50 до +50. После создания очереди...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru