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

Поиск элемента в queue - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 5.00
pun4er
6 / 6 / 1
Регистрация: 06.10.2010
Сообщений: 122
05.01.2012, 11:33     Поиск элемента в queue #1
Доброе утро! Такой вопрос, можно ли как то осуществлять поиск элемента в очереди? В алгоритмах нашел функцию поиска find, но у queue нет итератора....Может кто знает алгоритм поиска именно в очереди?Буду признателен.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
soon
 Аватар для soon
2536 / 1301 / 81
Регистрация: 09.05.2011
Сообщений: 3,086
Записей в блоге: 1
05.01.2012, 11:44     Поиск элемента в queue #2
queue не подразумевает свободное разгуливание по самой себе. Выпихивать в другую очередь и искать.
sandye51
программист С++
 Аватар для sandye51
677 / 579 / 39
Регистрация: 19.12.2010
Сообщений: 2,016
05.01.2012, 13:28     Поиск элемента в queue #3
если сильно хочется, то можно вспомнить что queue это адаптер контейнера, следовательно получить сам контейнер и делать что хотим)
C++
1
2
std::queue<int> f;
f._Get_container();
вряд ли конечно этот метод предусмотрен стандартом, но в VS он есть)
silent_1991
Эксперт C++
4938 / 3014 / 149
Регистрация: 11.11.2009
Сообщений: 7,024
Завершенные тесты: 1
06.01.2012, 12:08     Поиск элемента в queue #4
А чтобы по стандарту, можно вот такую простенькую функцию написать:
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
#include <iostream>
#include <vector>
#include <list>
#include <queue>
#include <deque>
#include <algorithm>
#include <iterator>
 
template<typename T, typename Cont, typename FwdIter>
void queue_to_container(const std::queue<T, Cont>& q, FwdIter iter)
{
    typedef T value_type;
    
    std::queue<T> copy_q = q;
    
    while (!copy_q.empty())
    {
        *iter++ = copy_q.front();
        
        copy_q.pop();
    }
}
 
int main()
{
    std::queue<int> q;
    
    q.push(10);
    q.push(20);
    q.push(30);
    
    std::vector<int> vec(3);
    
    queue_to_container(q, vec.begin());
    
    std::list<int> lst;
    
    queue_to_container(q, std::back_inserter(lst));
    
    std::cout << "Vector: ";
    std::copy(vec.begin(), vec.end(), std::ostream_iterator<int>(std::cout, "  "));
    std::cout << std::endl;
    
    std::cout << "List: ";
    std::copy(lst.begin(), lst.end(), std::ostream_iterator<int>(std::cout, "  "));
    std::cout << std::endl;
    
    std::cout << "Queue: ";
    std::cout << q.front() << "  ";
    q.pop();
    std::cout << q.front() << "  ";
    q.pop();
    std::cout << q.front() << std::endl;
    q.pop();
    
    return 0;
}
Yandex
Объявления
06.01.2012, 12:08     Поиск элемента в queue
Ответ Создать тему
Опции темы

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