Форум программистов, компьютерный форум CyberForum.ru

Собственный аллокатор и unordered_map - C++

Восстановить пароль Регистрация
 
Surgery
3 / 3 / 0
Регистрация: 28.09.2013
Сообщений: 32
22.03.2014, 11:30     Собственный аллокатор и unordered_map #1
Имеется свой аллокатор. Для простоты приведу здесь максимально простой вариант, что бы не вводить лишние сущности, проблема с ним та же.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
class myallocator : public std::allocator<T>
{
public:
    typedef size_t size_type;
    typedef T* pointer;
    typedef const T* const_pointer;
 
    template<typename _Tp1>
    struct rebind
    {
        typedef myallocator<_Tp1> other;
    };
 
    inline pointer allocate(size_type n)
    {
        return (pointer)(::operator new(n * sizeof(T)));
    }
 
    inline pointer allocate(size_type n, const void *hint)
    {
        return (pointer)(::operator new(n * sizeof(T)));
    }
 
    inline void deallocate(pointer p, size_type n)
    {
        ::operator delete(ptr);
    }
 
    myallocator() throw() : std::allocator<T>() { }
    myallocator(const myallocator &a) throw() : std::allocator<T>(a) { }
    ~myallocator() throw() { }
};
При использовании его с basic_string, vector все работает нормально. При использовании с unordered_map, вот так:
C++
1
2
3
template <class Kty, class ValTy> using fast_hash_map = std::unordered_map<Kty, ValTy, std::hash<Kty>, std::equal_to<Kty>, myallocator<std::pair<Kty, ValTy> > >;
//....
fast_hash_map<std::string, unsigned> map;
компилятор выдает ошибку
error C2664: "myallocator<_Newfirst>::myallocator(const myallocator<_Newfirst> &) throw()": невозможно преобразовать аргумент 1 из "const myallocator<std:: pair<astring,unsigned int>>" в "const myallocator<_Newfirst> &" C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include\xmemory0 817
, ссылаясь на
C++
1
2
3
4
5
template<class _Other>
        _Wrap_alloc(const _Other& _Right) _THROW0()
        : _Mybase(_Right)
        {   // construct from a related allocator
        }
в библиотечном xmemory0.
Использую Visual Studio 2013. Просьба подсказать, что с моим несчастным аллокатором не так
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.03.2014, 11:30     Собственный аллокатор и unordered_map
Посмотрите здесь:

Задача с собеседования (аллокатор памяти) C++
Аллокатор в chrome C++
C++ работа с unordered_map
C++ unordered_map содержащий потоки
C++ Пишем аллокатор
Hash_map unordered_map C++
Как написать пуловый аллокатор для работы с объектами C++
C++ Быстрый аллокатор

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 12:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru