2012-06-27 3 views
12

Мне нужно дерево статистики заказа для стандартных контейнеров карт GCC STL.Статистика статистики по заказу на C++

Я проверил и есть что-то известное как PBDS. Структуры данных на основе политик. Это использование также не ясно для меня.

Кто-нибудь может сказать мне, как использовать контейнеры для карт STL для дерева статистики заказа? Даже если его только на GNU G ++ достаточно?

ответ

14

Вот пример GNU на основе политик STL MAP реализуется как порядок статистического дерева (протестировано на Linux GCC 4.6.1):

#include <iostream> 
#include <ext/pb_ds/assoc_container.hpp> 
#include <ext/pb_ds/tree_policy.hpp> 

using namespace std; 
using namespace __gnu_pbds; 

typedef 
tree< 
    int, 
    int, 
    less<int>, 
    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; 
} 

Вот a link to the overview of GNU Policy-Based Data Structures. Другой раздел: tree_order_statistics example. Я не могу найти хорошую ссылку для структур данных на основе политик, но вы можете использовать эти ссылки, а также источники PBDS.

+0

Есть ли способ использовать эти библиотеки с помощью компилятора Visual Studio? (cl) –

+0

Как вы можете видеть из [документации] (https://gcc.gnu.org/onlinedocs/libstdc++/ext/pb_ds/prerequisites.html), он должен быть совместим с cl. Но я никогда не пытался использовать его таким образом. –

+0

Как мне импортировать эту библиотеку в среду Visual Studio? –

Смежные вопросы