【发布时间】:2014-02-16 10:21:30
【问题描述】:
vector<Mat> images;
vector<int> labels;
我假设Mat 是图像结构,int 是数据类型。但是vector 是什么?
它是一个二维数组吗?请提前清除我的疑问谢谢。
【问题讨论】:
vector<Mat> images;
vector<int> labels;
我假设Mat 是图像结构,int 是数据类型。但是vector 是什么?
它是一个二维数组吗?请提前清除我的疑问谢谢。
【问题讨论】:
在 C++ 中,std::vector 是一个序列容器,它封装了动态大小的数组。这是一个1-dimension 数组,其元素是连续存储的。
对于vector<Mat> images;,images 被声明为1-维数组,其元素为cv::Mats。
要定义此类元素的2-dimension 数组,您可以使用vector<vector<Mat>> images_2d;。
对于vector<int> labels;,labels 被声明为1-维数组,其元素为ints。
要定义此类元素的2-dimension 数组,您可以使用vector<vector<int>> labels_2d;。
【讨论】:
vector<int> labels 表示标签向量。所以,无论何时你想在这个向量中插入一个元素,你都可以通过label.push_back(elementToBeInserted); 来实现。
无论何时您想要访问此向量中存在的元素,您都可以执行以下操作:
for(int i=0; i<labels.size(); i++)
{
int element = labels[i];
cout<<Element: <<element;
}
类似的描述也适用于vector<Mat> images;。还有一件事是Mat 代表Matrix,图像存储为矩阵。
PS: vector< vector<int> >labels; 将代表一个二维向量
【讨论】:
vectors 的情况下,您不需要指定大小。每当您想插入一个元素时,您都可以通过label.push_back() 进行操作,并将其存储在下一个可用位置。如果它对您有用,请投票/接受我的回答。