Я использую std::unordered_map<void *, size_t>
для хранения некоторых значений и получаю "индекс вектора вне диапазона" при добавлении нового значения. Я использую Visual Studio 2012, и трассировка ошибки:
std::vector<std::_List_unchecked_iterator<std::_List_val<std::_List_simple_types<std::pair<void * const,unsigned int> > > >,std::_Wrap_alloc<std::allocator<std::_List_unchecked_iterator<std::_List_val<std::_List_simple_types<std::pair<void * const,unsigned int> > > > > > >::operator[](unsigned int _Pos) Line 1140 C++
std::_Hash<std::_Umap_traits<void *,unsigned int,std::_Uhash_compare<void *,std::hash<void *>,std::equal_to<void *> >,std::allocator<std::pair<void * const,unsigned int> >,0> >::_Vec_lo(unsigned int _Bucket) Line 907 C++
std::_Hash<std::_Umap_traits<void *,unsigned int,std::_Uhash_compare<void *,std::hash<void *>,std::equal_to<void *> >,std::allocator<std::pair<void * const,unsigned int> >,0> >::_End(unsigned int _Bucket) Line 936 C++
std::_Hash<std::_Umap_traits<void *,unsigned int,std::_Uhash_compare<void *,std::hash<void *>,std::equal_to<void *> >,std::allocator<std::pair<void * const,unsigned int> >,0> >::_Insert<std::pair<void * const,unsigned int>,std::_Nil>(std::pair<void * const,unsigned int> && _Val, std::_Nil _Pnode) Line 872 C++
std::_Hash<std::_Umap_traits<void *,unsigned int,std::_Uhash_compare<void *,std::hash<void *>,std::equal_to<void *> >,std::allocator<std::pair<void * const,unsigned int> >,0> >::insert(std::pair<void * const,unsigned int> && _Val) Line 371 C++
конкретно:
_Unchecked_iterator& _Vec_lo(size_type _Bucket)
{ // return reference to begin() for _Bucket
return (_Vec[2 * _Bucket]);
}
где _Vec — пустой вектор, а _Bucket — хеш указателя (> 0). То же самое происходит, когда тип ключа не void *, а uintptr_t. Это ошибка VS или я что-то не так делаю?
Примечание: этот вопрос связан с индексом вектора unorderedmap С++ вне диапазона - это та же проблема, но ответ не связан
mSizes
случайно глобальным или статическим членом класса? - person Mark B   schedule 11.04.2013_
, для ваших собственных функций переменных и классов. Они зарезервированы. - person   schedule 11.04.2013_Upperscore
зарезервированы, но_underscore
в порядке. - person abergmeier   schedule 24.02.2016