Árbol de estadísticas de orden en C ++

Necesito un árbol de estadísticas de orden para los contenedores de mapas estándar GCC STL.

Lo comprobé y hay algo conocido como PBDS. Políticas basadas en estructuras de datos. Ese uso tampoco está claro para mí.

¿Alguien puede decirme cómo usar los contenedores de mapas STL para el árbol de estadísticas de orden? Incluso si es solo en GNU G ++ es suficiente?

Este es el ejemplo de MAP STL basado en políticas de GNU implementado como árbol de estadísticas de orden (probado en Linux gcc 4.6.1):

#include  #include  #include  using namespace std; using namespace __gnu_pbds; typedef tree< int, int, less, rb_tree_tag, tree_order_statistics_node_update> map_t; int main() { map_t s; s.insert(make_pair(12, 1012)); s.insert(make_pair(505, 1505)); s.insert(make_pair(30, 1030)); cout << s.find_by_order(1)->second << '\n'; return 0; } 

Aquí hay un enlace a la descripción general de las estructuras de datos basadas en políticas de GNU . Aquí hay otro ejemplo de tree_order_statistics . No puedo encontrar una buena referencia para Estructuras de datos basadas en políticas, pero puede usar estos enlaces así como fonts de PBDS.