【发布时间】:2009-08-20 08:22:07
【问题描述】:
我有一个名为 Contact 的类,我想构建一个指向这些对象的指针数据结构,例如 127 行和 20 列的矩阵。 我试过以这种方式使用 std::vector 类
std::vector < std::vector<Contact* > > matrix (127, std::vector < Contact* > (20));
然后,在标题中声明以下内容
std::vector<std::vector<Contact* > > Buckets;
我将之前初始化和声明的矩阵分配给它(这一步是因为基本上我不知道如何以更清晰和简短的方式来做):
Buckets = matrix;
但使用类似的 push_back 函数
Buckets[pot].push_back(cont_temp);
一段时间后会产生错误(“在抛出 'std::bad_alloc' 的实例后调用终止”),我不知道如何解决它。
还有其他更好的方法来实例化和初始化矩阵吗?您会建议其他解决方案而不是使用向量向量(boost::multiarray..?)?
谢谢 (对不起这个愚蠢的问题,我是个穷学生:)
编辑:我发现了错误(只是一个超出范围的赋值)。如果您对这种数据结构有一般性建议,我还在这里...
【问题讨论】:
-
你使用调试器吗?如果是这样,您可以在抛出异常的地方停下来看看那里发生了什么。