(Хорошо, так что мой предыдущий вопрос находится на удержании, как слишком широк, поэтому я сузив его здесь.)Внедрение специализированных структур данных в современном C++
Я ищу, чтобы принять участие в алгоритмических соревнованиях по программированию , и множество проблем зависит от использования специализированных структур данных, которые очень хороши при определенной операции - например, деревья Фенвика позволяют вычислять префиксные суммы списка значений в логарифмическом времени.
Что такое предпочтительный способ реализации таких структур данных в современных C++ (т. Е. С использованием возможностей C++ 11)? Можно ли использовать STL-алгоритмы и контейнеры вместо того, чтобы писать struct
и кодировать каждую операцию вручную?
Я ищу деревья Фенвика, деревья сегментов, treaps и некоторые другие структуры данных, часто полезные в конкурсах в стиле IOI, но общих стратегий более чем достаточно.
Почему вы уделяете особое внимание современным C++? Какую новую конструкцию языка или стандартное расширение библиотеки вы имеете в виду, что могло бы иметь значение? –
@PeterSchneider Возможно, я ошибаюсь, но насколько я знаю, C++ 11 представляет много новых алгоритмов STL, которые облегчают некоторые вещи, такие как [некоторые показаны здесь] (http://stackoverflow.com/questions/24650626/как к орудию-классик-сортировочный-алгоритмы-в-современной-C). –
@PeterSchneider моя точка зрения заключалась в том, что ответы должны предпочтительно использовать все, что предлагает C++ 11. –