【发布时间】:2010-11-21 20:06:35
【问题描述】:
我遇到了一个奇怪的错误,希望有更多经验的程序员能对此有所了解。我正在使用 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 矩阵中的某些元素,但不知何故,底层存储机制“放错了位置”。但是,我不确定为什么或如何解决它。这也可能完全不符合实际。
您能提供的任何帮助将不胜感激。如果我没有在这个问题中包含正确的信息,请让我知道我缺少什么。谢谢。
【问题讨论】:
标签: c++ boost sparse-matrix