Реализация карты BTree от Google

Я пытаюсь использовать Google C ++ BTree.

Код:

typedef btree_map<int, int> MyMap;
MyMap *obj_map = new MyMap;
obj_map->insert(make_pair(1,1));
obj_map->insert(make_pair(2,2));
obj_map->insert(make_pair(3,3));
obj_map->insert(make_pair(4,4));
obj_map->insert(make_pair(5,5));
obj_map->insert(make_pair(6,6));

MyMap::const_iterator lookup = obj_map->find(4);
printf("found %d", *lookup);

В первый раз, когда я запускаю это, он компилируется с предупреждением, но Eclipse запрашивает ошибку:

ref_impl/../include/btree.h: In instantiation of ‘btree::btree_node<Params>::const_reference btree::btree_node<Params>::value(int) const [with Params = btree::btree_map_params<int, int, std::less<int>, std::allocator<std::pair<const int, int> >, 256>; btree::btree_node<Params>::const_reference = const std::pair<const int, int>&]’:
ref_impl/../include/btree.h:806:32:   required from ‘btree::btree_iterator<Node, Reference, Pointer>::reference btree::btree_iterator<Node, Reference, Pointer>::operator*() const [with Node = const btree::btree_node<btree::btree_map_params<int, int, std::less<int>, std::allocator<std::pair<const int, int> >, 256> >; Reference = const std::pair<const int, int>&; Pointer = const std::pair<const int, int>*; btree::btree_iterator<Node, Reference, Pointer>::reference = const std::pair<const int, int>&]’
ref_impl/core.cpp:404:22:   required from here
ref_impl/../include/btree.h:560:63: warning: dereferencing type-punned pointer will break strict-aliasing rules [-Wstrict-aliasing]

Если я снова запускаю программу, она запускается и показывает правильный результат. Проблема в том, что если я использую вышеописанную реализацию в реальной программе, она не дает постоянных результатов.

Любые предложения о том, как это исправить?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]