Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/25: Рейтинг темы: голосов - 25, средняя оценка - 4.76
2 / 2 / 1
Регистрация: 28.03.2012
Сообщений: 76

STL, Queue (в очереди изменить один элемент на другой?)

16.12.2012, 18:03. Показов 5134. Ответов 6
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Реально ли в очереди изменить один элемент на другой? Использовать другую очередь естественно разрешено и не одну, если да - подскажите как... С удалением элемента справился...А с изменением не могу, ибо он удаляет тот элемент, который мы заменяет и ставит замену в начало очереди.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
16.12.2012, 18:03
Ответы с готовыми решениями:

Найти максимальный элемент Очереди (Queue) и вставить после него «0»
Доброго времени суток. Задание создать консольное приложение и "Найти максимальный элемент очереди или стека вставить после него...

Изменить заданный элемент очереди
Привет, Вот задача: Реализуйте очередь с приоритетами. Ваша очередь должна поддерживать следующие операции: 1) добавить элемент 2)...

Передача массива в stl::queue
Доброго времени суток. Не могу разобраться с типами. Суть: надо в stl::queue отправить массив из 8 байт, и потом из этой очереди его...

6
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
16.12.2012, 19:44
Как ты вообще собираешься получить доступ к произвольному элементу очереди?
0
2 / 2 / 1
Регистрация: 28.03.2012
Сообщений: 76
16.12.2012, 21:32  [ТС]
Цитата Сообщение от Somebody Посмотреть сообщение
Как ты вообще собираешься получить доступ к произвольному элементу очереди?
Ну удаление по критерию вышло же.
0
2838 / 1647 / 254
Регистрация: 03.12.2007
Сообщений: 4,222
16.12.2012, 21:43
Можно перекидывать элементы из старой очереди в новую поэлементно; если текущий элемент соответствует заданному условию, то вместо него надо добавить другой.
0
2 / 2 / 1
Регистрация: 28.03.2012
Сообщений: 76
16.12.2012, 21:45  [ТС]
Цитата Сообщение от Somebody Посмотреть сообщение
Можно перекидывать элементы из старой очереди в новую поэлементно; если текущий элемент соответствует заданному условию, то вместо него надо добавить другой.
Пытался удаление подредактировать, но что-то не выходило... удалялся нужный элемента, а новый заносился в начало, не знаю почему, но в коде было логически всё верно... но кода уже нет)
0
 Аватар для igorrr37
2882 / 2029 / 992
Регистрация: 21.12.2010
Сообщений: 3,782
Записей в блоге: 9
16.12.2012, 22:29
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
#include <iostream>
#include <queue>
 
template<typename T>
void Replace(T const& what, T const& replacement, std::queue<T>& queue)
{
    typename std::queue<T>::size_type queuesize = queue.size(), i;
    for(i = 0; i < queuesize; ++i)
    {
        if(queue.front() == what)
            queue.push(replacement);
        else
            queue.push(queue.front());
        queue.pop();
    }
}
 
template<typename T>
std::ostream& operator<<(std::ostream& ost, std::queue<T>& queue)
{
    typename std::queue<T>::size_type queuesize = queue.size(), i;
    for(i = 0; i < queuesize; ++i)
    {
        ost << queue.front() << std::endl;
        queue.push(queue.front());
        queue.pop();
    }
    return ost;
}
 
int main()
{
    std::queue<int> queue;
    queue.push(2);
    queue.push(33);
    queue.push(2);
    queue.push(55);
    queue.push(2);
    std::cout << queue << std::endl;
    Replace(2, 77, queue);
    std::cout << queue << std::endl;
    return 0;
}
1
Эксперт С++
 Аватар для Mr.X
3225 / 1752 / 436
Регистрация: 03.05.2010
Сообщений: 3,867
17.12.2012, 11:15
Цитата Сообщение от Somebody Посмотреть сообщение
Как ты вообще собираешься получить доступ к произвольному элементу очереди?
Ну, контейнер у очереди protected, а поэтому легко доступен:
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/////////////////////////////////////////////////////////////////////////////////////////
#include <algorithm>
#include <deque>
#include <iostream>
#include <iterator>
#include <queue>
/////////////////////////////////////////////////////////////////////////////////////////
template<class  T>
class  T_queue_inheritor : public std::queue<T>
{
    typedef std::queue<T>                       T_base_queue;
    typedef typename T_base_queue::value_type   T_value_type;
public:
    //-----------------------------------------------------------------------------------
    T_queue_inheritor( const T_base_queue&  base_queue )
        :
        T_base_queue( base_queue )
    {}
    //-----------------------------------------------------------------------------------
    void  replace
            (
                const T_value_type&     old_value,
                const T_value_type&     new_value
            )
    {
        std::replace
            (
                c.begin     (),
                c.end       (),
                old_value,
                new_value
            );
    }
    //-----------------------------------------------------------------------------------
    void  print()
    {
        std::copy
            (
                c.begin                     (),
                c.end                       (),
                std::ostream_iterator<T>    (std::cout, "\t")
            );
 
        std::cout   <<  std::endl;
    }
    //-----------------------------------------------------------------------------------
};
/////////////////////////////////////////////////////////////////////////////////////////
template<class  T>
void  replace_in_queue
    ( 
        std::queue<T>&                      queue_obj,
        typename std::queue<T>::value_type  old_value,
        typename std::queue<T>::value_type  new_value
    )
{
    T_queue_inheritor<T>    queue_inheritor( queue_obj );
    queue_inheritor.replace
        (
            old_value,
            new_value
        );
 
    queue_obj.swap( queue_inheritor );
}
/////////////////////////////////////////////////////////////////////////////////////////
template<class  T>
void  print_queue( const std::queue<T>&  queue_obj )
{
    T_queue_inheritor<T>    queue_inheritor( queue_obj );
    queue_inheritor.print();
}
/////////////////////////////////////////////////////////////////////////////////////////
typedef std::queue<int>     T_int_queue;
/////////////////////////////////////////////////////////////////////////////////////////
int main()
{
    std::locale::global(std::locale(""));
    T_int_queue     int_queue;
    int_queue.push(1);
    int_queue.push(9);
    int_queue.push(4);
    int_queue.push(5);
 
    std::cout   <<  "Исходная очередь:"
                <<  std::endl;
 
    print_queue( int_queue );
 
    replace_in_queue
        (
            int_queue,
            5,
            6
        );
 
    std::cout   <<  std::endl
                <<  "Очередь после изменения:"
                <<  std::endl;
 
    print_queue( int_queue );
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
17.12.2012, 11:15
Помогаю со студенческими работами здесь

Библиотека стандартных шаблонов (STL) queue
Добрый вечер , нужна помощь с реализацией STL шаблона queue . Задание состоит в том что нужно вывести информацию о деталях. Не могу...

Сортировка очереди (queue)
Здравствуйте, нужно отсортировать числовую последовательность в очереди по возрастанию с помощью минимальных элементов. Не понимаю как...

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

Лишние данные в очереди Queue
Осваиваю работу с COM-портом. Отправку и простой приём данных победил, но ввиду неоднозначности приёма пакета данных решил складывать их в...

Есть ли в очереди хотя бы один элемент, который равен следующему за ним
Описать процедуру, которая определяет, есть ли в очереди хотя бы один элемент, который равен следующему за ним элементу. С модулем,...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru