我有一个名为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 ..?)?
感谢 (抱歉这个愚蠢的问题,我是一个可怜的学生:)
编辑:我发现了错误(只是一个超出界限的分配)。如果您对此类数据结构有一般性建议,我仍然在这里...
答案 0 :(得分:2)
当你说“过了一会儿”时,这是什么意思? std :: bad_alloc意味着你的内存不足。你有一个吞噬记忆的循环吗?
答案 1 :(得分:0)
矩阵中的联系人是否动态分配?如果是这样,当你说:
Buckets = matrix;
你最终得到两个指向同一个动态分配对象的指针,这只会导致线路故障。您应该使用智能指针的向量,例如Boost的共享指针。
答案 2 :(得分:0)