У меня странная ошибка, на которую, я надеюсь, опытный программист мог бы кое-что понять. Я использую разреженные матрицы boost ublas, в частности mapped_matrix, и в конечном итоге возникает непостоянная ошибка, но не на начальных этапах программы. Это большая программа, поэтому я не могу опубликовать весь код, но основная идея заключается в том, что я вызываю функцию, которая принадлежит определенному классу:
bool MyClass::get_cell(unsigned int i, unsigned int j) const
{
return c(i,j);
}
Переменная c определена как член класса
boost::numeric::ublas::mapped_matrix<bool> c;
Когда возникает ошибка, программа, кажется, останавливается (но не падает). Отладка с Eclipse, я вижу, что программа вводит код boost mapped_matrix и продолжает несколько уровней вниз в std :: map, std :: _ Rb_tree и std :: less. Кроме того, программа иногда прослеживает до std :: map, std :: _ Rb_tree и std :: _ Select1st. Пока выполняется код и активная строка в памяти изменяется в _Rb_tree, выполнение никогда не возвращается на уровне std :: map. Строка в std :: map, на которой закреплена программа, является возвращением следующей функции.
const_iterator
find(const key_type& __x) const
{ return _M_t.find(__x); }
Мне кажется, что в матрице c есть какой-то элемент, который ищет программа, но каким-то образом лежащий в основе механизм хранения "потерял его". Однако я не уверен, почему или как это исправить. Это также может быть совершенно с базы.
Любая помощь, которую вы можете оказать, будет принята с благодарностью. Если я не включил правильную информацию в этот вопрос, пожалуйста, дайте мне знать, что мне не хватает. Спасибо.