Re[4]: Разместить в обратном порядке отображаемые значения s
От: Сыроежка  
Дата: 10.01.12 22:27
Оценка:
Здравствуйте, Marty, Вы писали:

M>Здравствуйте, Сыроежка, Вы писали:


С>>Спасибо за пример. Но я наверное нечетко сформулировал свой исходный вопрос. Меня удивило, что в контейнере std::map нет функции-члена reverse Естественно я сделал предположение, что если такой функции-члена класса нет, то наверное легко эту операцию сделать с помощью стандартных алгоритмов. но стандартный алгоритм std::reverse по понятным причинам не подходит.

С>>Поэтому и возник вопрос, как с помощью стандартных алгоритмов сделать подобную операцию для std::map. Может быть в boost такой алгоритм существует, если с помощью стандартных алгоритмов нужно исхитряться?

M>Задача не совсем понятна, но попробую отгадать.

M>Вариант 1 — надо что-то сделать с элементами в обратном порядке
M>
M>std::foreach( map.rbegin(), map.rend(), doSomething() );
M>


M>Вариант 2 — сделать map с обратным порядком —

M>Тут надо просто компаратор другой для второго map'а задать.

M>Но вообще, это вроде очевидные решения, я наверно задачи не понял.


Задача простая: для заданного контейнера std::map реверсировать отображаемые значения.
Хочу понять, почему такой алгоритм не включен в качестве функции-члена класса std::map. Если он не включен, то наверное предполагается, что сделать это просто с помощью стандартных алгоритмов. Ведь какие основные принципы включения или не включения алгоритмов к ачестве функций-членов контейнеров? Первое- это невозможность сделать данную операцию с помощью стандартного алгоритма. например, стандартный алгоритм std::sort требует наличия итераторов произвольного доступа. Так как в контейнере std::list итератор не является итератором произвольного доступа, то этот алгоритм включили в качестве функции-лена класса для контейнера std::list Второе — это если делать алгоритм членом класса, то можно достичь большей эффективности. Такие алгоритмы включены, например, в класс std::basic_string.
Поэтому и возник вопрос, раз алгоритм reverse не включен в контейнер std::map в качестве члена класса, то наверное его можно как-то достаточно просто реализовать с помощью стандартных алгоритмов? да причем так, чтобы каждый программист не открывал для себя заново велосипед.
Меня можно встретить на www.cpp.forum24.ru
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.