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

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

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ написать программу разворот строки с указателем http://www.cyberforum.ru/cpp-beginners/thread734087.html
помогите пожалуйста срочно
C++ Сколько студентов в группе - отличников... (проверить) Сколько студентов в группе - отличников (все оценки - 5) и двоишников !? #include "stdafx.h" #include <iostream> #include <string.h> #include <stdio.h> #include <iomanip.h> using namespace... http://www.cyberforum.ru/cpp-beginners/thread734080.html
Функции, удаление подстроки в n символов с к-и позиции C++
Создать ф-ю удаления подстроки в n символов с к-и позиции!Наперед большое спасибо за помощь !
Программу учёта сотрудников и учащихся университета C++
помогите разобраться пожалуйста, буду благодарен за любую помощь, очень нужно решить к зачёту 2. Программу учёта сотрудников и учащихся университета. Один общий абстрактный предок с функциями...
C++ Найти максимальный элемент массива и его индекс http://www.cyberforum.ru/cpp-beginners/thread734063.html
найти максимальный элемент массива Х(12) и его индекс ! Наперед спасибо !
C++ ПОМОЧЬ отсортировать массив по количеству бит, равных 0 (в двоичной форме) Полное задание такое ПОРАЗРЯДНЫЕ ОПЕРАЦИИ : 24. Дан массив из элементов типа unsigned char. Вывести массив в порядке возрастания по количеству бит равных 0. Вывести массив в десятичном,... подробнее

Показать сообщение отдельно
Mr.X
Эксперт С++
3049 / 1694 / 265
Регистрация: 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
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru