Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 5.00/9: Рейтинг темы: голосов - 9, средняя оценка - 5.00
3 / 3 / 1
Регистрация: 30.11.2010
Сообщений: 69
1

Найти элемент в контейнере priority_queue, используя STL вские итераторы и алгоритмы

13.05.2015, 18:48. Показов 1709. Ответов 3
Метки нет (Все метки)

Здравствуйте, задача описана в навание темы. Можно перебрать в цикле все элементы очереди, сравнивая с нужным, но требуется именно с помощью STL'вских итераторов и алгоритмов.
Если не сложно, сделайте ещё, пожалуйста, сортировку в том же контейнере с помощью STL'вских итераторов и алгоритмов.
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
13.05.2015, 18:48
Ответы с готовыми решениями:

Избавиться от цикла, используя алгоритмы из STL
Сделал вот такую функцию... Она создает из вектора ассоциативный массив, у которого ключ - элемент...

Найти в контейнере элемент (Rab_st)>=10
Всем привет) Условие: найти в контейнере элемент (Rab_st)>=10 Заранее спасибо!) Вот код: ...

STL. Итераторы и последовательные контейнеры
Немогу решить эти задачки: 1 Написать экземпляр класса queue на основе элементов типа string. ...

STL. Сортировка объектов в контейнере
Имеется список list из объектов Time (минуты:секунды). Через собственный метод...

3
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
13.05.2015, 19:51 2
Поиск с условием:
C++
1
 find_if(it_begin, it_end, predicate);
Сортировка:
C++
1
sort(it_begin, it_end, /*опционально*/ predicate);
0
3 / 3 / 1
Регистрация: 30.11.2010
Сообщений: 69
13.05.2015, 19:51  [ТС] 3
Можно весь код. Я знаю, что есть такие алгоритмы как sort( ) и find( ). Я не знаю как их применить к priority_queue, потому что в этом контейнере нет методов begin( ) и end( ).
0
244 / 164 / 133
Регистрация: 30.09.2012
Сообщений: 690
13.05.2015, 20:29 4
Лучший ответ Сообщение было отмечено tro9an как решение

Решение

tro9an, Да, что-то не обратил внимания, что у вас очередь ^_^
Попробую, что-нибудь придумать

Добавлено через 33 минуты
В общем я придумал только такое решение:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <queue>
#include <algorithm>
#include <iostream>
#include <vector>
int main()
{
    std::priority_queue<int> cont;
    std::vector<int> copy;
    for(int i = 0; i <= 10; ++i)
        cont.push(i);
 
    for(int i = 0; i <= 10; ++i)
    {
        std::cout << cont.top() << " ";
        copy.push_back(cont.top());
        cont.pop();
    }
    std::find_if(copy.begin(), copy.end(), /* условие*/);
    return 0;
}
Насчет сортировки: очередь в данном случае и так сортирует изначально по своему условию (less, если не ошибаюсь), поэтому для сортировки в другом порядке, надо создавать новую очередь с приоритетом и с другим условием сортировки.
С поиском элемента: копировать элементы очереди в вектор и в векторе уже искать.

Можно в векторе и отсортировать, как хочется, но не знаю, это ли надо
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
13.05.2015, 20:29

Итераторы потокового ввода/вывода stl
Возник такой вопрос при изучении stl. Берем файл, из которого нужно считать данные, через copy...

В каком STL-контейнере лучше хранить объекты?
Есть класс, реализующий адреса class address { ... } Поискал в сети увидел 3 варианта...

Можно ли узнать размер одного элемента в STL контейнере?
Допустим, мне захотелось узнать, сколько памяти ест мой map. Для этого надо знать размер 1...

STL. Не работает вывод через << в поток когда использую итераторы :(
Вроде бы ничего сложного, но почему-то работать не хочет. Никак не могу понять почему ( Ругается,...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.