से बाहर है मैं कुछ मूल्यों को पकड़ने के लिए std::unordered_map<void *, size_t>
का उपयोग कर रहा हूं और मुझे एक नया मान जोड़ने के दौरान "श्रेणी का वेक्टर सबस्क्रिप्ट" मिल रहा है। मैं Visual Studio 2012 का उपयोग कर रहा है और त्रुटि ट्रेस है:std :: unordered_map वेक्टर सबस्क्रिप्ट
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++
specificaly:
_Unchecked_iterator& _Vec_lo(size_type _Bucket)
{ // return reference to begin() for _Bucket
return (_Vec[2 * _Bucket]);
}
जहां _Vec एक खाली वेक्टर है और _Bucket सूचक हैश है (> 0)। वही बात तब होती है जब कुंजी प्रकार शून्य नहीं होता है, लेकिन uintptr_t। क्या यह एक वीएस बग है या क्या मैं कुछ गलत कर रहा हूं?
नोट: इस सवाल का c++ unorderedmap vector subscript out of range से संबंधित है - यह एक ही समस्या है, लेकिन इस सवाल का जवाब संबंधित नहीं है
तो, यह कोड वास्तव में इस मानचित्र में कुछ जोड़ने का प्रयास कहां है? – Chad
'शून्य * स्केलेबल मेमरी प्रबंधक :: आवंटित हस्ताक्षर (आकार_टी आकार, आकार_टी संरेखण) { शून्य * सूचक = scalable_aligned_malloc (आकार, संरेखण); अगर (सूचक == nullptr) bad_alloc() फेंक दें; mTotalAllocated + = आकार; mSizes.insert (SizeMap :: value_type (सूचक, आकार)); ++ mTotalAllocations; वापसी सूचक; } ' – krojew
किसी भी मौके पर वैश्विक, या स्थैतिक वर्ग सदस्य 'msizes' है? –