vector <Mat> redAd(adFileName.size());
fill(redAd.begin(), redAd.end(), NULL);
for (int i = 0; i < adFileName.size(); ++i) {
cout << adFileName[i].c_str() << endl;
Mat im = imread(adFileName[i].c_str(), 1);
cout << im.data << endl;
redAd.push_back(im);
cout << redAd[i].data << endl;
}
这里,adFileName
是包含图像文件路径的字符串向量。这些都是正确打印的。 im.data
给出非空值。但在将其推入vector <Mat>
并打印元素后显示“应用程序已停止工作”。
应该如何解决?
答案 0 :(得分:1)
因为,您将矢量大小设置为adFileName.size(),然后将push_back设置为新元素。 您应该构造0大小的向量并使用push_back,否则使用insert。
redAd.insert(redAd.begin()+i,1,im);
答案 1 :(得分:1)
而不是带有NULL的fill
,而不是问题,你可以调用默认的向量构造函数vector <Mat> redAd;
,然后调用redAd.reserve(adFileName.size())
,然后按原样保留循环。