我想创建一个精确100个值的一维数组,并在每个索引存储另一个数组的索引。如果我要使用std::vector<int16_t> someVector
,我如何确保someVector
只有100个值,并且可能会在位置48添加第一个值,如someVector[48] = 29322
,依此类推。
作为替代方案,我尝试创建Mat someArray(1,100,CV_16UC1,Scalar(9999))
的1-D垫。现在,当我尝试使用int retrievedValue = someArray.row(0).col(48)
检索索引48处的值时,它表示无法从Mat
转换为int
。
我意识到我为一件非常简单的事情做了一些疯狂的事情,但请帮忙。
答案 0 :(得分:1)
初始化矢量时,您可以设置其大小:
std::vector<int16_t> someVector(100);
这种方式将使用100个元素的数组创建。但是不要忘记矢量的大小可能会在以后改变。
至于Mat,像row()或col()这样的运算符给出了初始矩阵的子矩阵。因此,您创建的代码将返回1x1矩阵,而不是短。如果要访问矩阵中的元素,则应为:
int retrievedValue = someArray.at<ushort>(0,48);