我有一个多维 vector 的声明
std::vector< vector < vector < ofxImage > > > front_objects;
然后我在创建它时将它发送到我的类(class):
Catalog_object * temp = new Catalog_object(&front_objects, numTag);
然后我执行以下操作:
Catalog_object::Catalog_object(vector< vector < vector < ofxImage > > > * _front_objects, int numTag) {
front_objects=_front_objects;
if (front_objects->size()<numTag+1) {
front_objects->resize(numTag+1);
}
}
我想做的是用来自 Catalog_objects 的 ofxImages vector 填充主要的 front_objects,这可能共享一些 ofxImages vector 的 vector 。
问题是“有时” vector 是用垃圾初始化的,当试图用垃圾清除它时
front_objects[numTag].resize(2);
程序因 EXC_BAD_ACCESS 而崩溃
用resize()调整大小时,不是应该用空 vector 填充吗?
谢谢
马克
更新
我试过这样做,但我得到“未初始化的引用成员‘Catalog_object::front_objects’”。
Catalog_object::Catalog_object(vector< vector < vector < ofxImage > > > & _front_objects, int numTag) { // CHANGED * FOR &
std::vector< vector < vector < ofxImage > > > & front_objects; // CHANGED * FOR &
front_objects=_front_objects;
if (front_objects.size()<numTag+1) {
front_objects.resize(numTag+1);
}
front_objects[numTag].resize(2);
}
std::vector< vector < vector < ofxImage > > > front_objects;
Catalog_object * temp = new Catalog_object(front_objects, numTag); // REMOVED &
最佳答案
最有可能在
front_objects[numTag].resize(2);
numTag
包含无效索引。
没有相关代码就不好说了。实际上,您是在说每次走进厨房时都会听到一种奇怪的声音。卡在两个东西之间的猫的图片使它很可能是猫,但也可能是别的东西。 :-)
干杯,
关于c++ - 用大小初始化的 vector ,无法清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4096418/