Stiamo usando un MultiMap per una rapida ricerche valore/indice, dichiarato come questochiamando .clear() o .Elimina() in C++ std :: multimap a volte causa di congelamento (100% CPU)
typedef double Numerical;
std::multimap<Numerical, Int32> SortableRowIndex;
E lo riempiamo a coppie, utilizzando
SortableRowIndex.insert(std::pair<Numerical, Int32>(GetSortable(i), i));
La funzione GetSortable() restituisce sempre un doppio. E questo funziona bene. Anche l'iterazione dei valori funziona bene. Ma poi viene la parte strana ... a volte quando cerchiamo di cancellare i dati ...
SortableRowIndex.clear();
... si va in una sorta di loop e bancarelle/gare, monopolizzavano il nucleo utilizzata della CPU a 100%.
Il metodo chiaro sembra essere ereditato da XTree (file system) e ci sono solo un coupld di righe al suo interno:
void clear() _NOEXCEPT
{ // erase all
#if _ITERATOR_DEBUG_LEVEL == 2
this->_Orphan_ptr(*this, 0);
#endif /* _ITERATOR_DEBUG_LEVEL == 2 */
_Erase(_Root());
_Root() = this->_Myhead;
_Lmost() = this->_Myhead;
_Rmost() = this->_Myhead;
this->_Mysize = 0;
}
Per qualche ragione, il mio Visual Studio 2013 non mi lascia un passo in questo metodo durante il debug ... e non posso, per la vita di me capire quale sia il problema!
Qualsiasi aiuto sarà ridicolmente apprezzato!
Ci sono dei NaN nell'ingresso? –
questo http://stackoverflow.com/questions/8096817/is-nan-a-valid-key-value-for-associative-containers può essere correlato – Slava
Cercando di capire cosa intendi ... input to where? –