我试图声明一个结构,
struct Sample {
int classLabel[2];
vector<Mat> image;
};
现在我想使用它,我将其初始化为
Sample sample1;
并在sample1
中保存5张图片,并创建另一张Sample sample2
并保存另外5张图片。
现在我想将这两个样本保存在Sample
的向量中。我宣布:
vector<Sample> samples;
现在当我尝试在样本中推送sample_back sample1和sample2时
samples.push_back(sample1);
samples.push_back(sample2);
它没有给我什么。示例显示为samples[2]
但不包含classLabel=???
和image=????
前面的问号
任何身体都可以指导我在哪里犯错误。我怎样才能使它变得可用。我的意思是在sample1
中正确保存结构sample2
和samples
。
会感恩的。
此致
答案 0 :(得分:2)
vector<Sample> samples;
samples.push_back(sample1);
samples.push_back(sample2);
在此之后,samples
的尺寸为2.因此,您只能访问samples[0]
和samples[1]
,而不是samples[2]
。
正如@sammy评论的那样,Watch
中的变量可能会在VS中显示不正确的值。
要使其正常工作,您可能需要按照以下步骤操作:
/Od
选项。查看here了解详情。
修改:对于评论中的代码:
sample1.classlabel[0] = 0;
sample1.classlabel[1]=1;
vector<Mat> temp;
temp.push_back(img1);
temp.push_back(img2);
temp.push_back(img3);
sample1.image=temp;
sample2.classlabel[0] = 0;
sample2.classlabel[1]=1;
vector<Mat> temp1;
temp.push_back(img5); // problem
temp.push_back(img6); // problem
temp.push_back(img7); // problem
sample2.image=temp1;
samples.push_back(sample1);
samples.push_back(sample2);
3个问题行应改为
temp1.push_back(img5);
temp1.push_back(img6);
temp1.push_back(img7);