Мы используем Multimap для быстрого значения/индекса поиска в, объявлен как этотвызова .clear() или .erase() на станд C++ :: MultiMap иногда вызывает замораживание (100% CPU)
typedef double Numerical;
std::multimap<Numerical, Int32> SortableRowIndex;
И мы заполняем его парами, используя
SortableRowIndex.insert(std::pair<Numerical, Int32>(GetSortable(i), i));
Функция GetSortable() всегда возвращает двойной. И это прекрасно работает. Итерация через значения отлично работает. Но потом приходит странная часть ... иногда, когда мы пытаемся очистить данные ...
SortableRowIndex.clear();
... он идет в какой-то петли и киосков/рас, коробления используется ядро процессора в 100%.
Прозрачный метод, похоже, унаследовал от xtree (системный файл) и есть только пару бокалов строк внутри:
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;
}
По какой-то причине, мой Visual Studio 2013 не позволит мне уйти в этот метод при отладке ... и я не могу, потому что жизнь меня выясняет, в чем проблема!
Любая помощь будет смешно оценена!
Есть ли какие-либо NaN на входе? –
это http://stackoverflow.com/questions/8096817/is-nan-a-valid-key-value-for-associative-containers можно связать – Slava
Попытка выяснить, что вы имеете в виду ... ввод туда, где? –