在头文件中,我将以下内容声明为公共成员变量:
vector< vector<unsigned char> > arImage;
在源代码中,我定义了temp
vector<vector<unsigned char> > temp (numImage, vector<unsigned char>(sizeImage));
现在我尝试,
temp.swap(arImage);
但是发生了错误。 (详细错误被省略,因为它们不是英文)
with
[
_Ty=std::vector<unsigned char>
]
//////////// 此外,,,,,,,,
我想换掉
vector<vector<unsigned char> > to vector<vector<unsigned char> >
我正在与MFC合作。我找不到合适的方法,所以我实际上采取了另一种方法。
在头文件中,
vector< vector<unsigned char> > * arImage;
在源代码中,
arImage = new vector< vector<unsigned char> > (numImage, vector<unsigned char>(sizeImage));
但这种方法并不舒服。(这种方法没有错误)
我想使用arImage [i] [j]。
在这种方法中,我必须使用(* arImage)[i] [j]
答案 0 :(得分:3)
您必须选择必须在temp
中传播的索引:
int index = 0;
temp[index].swap(arImage);
您将temp声明为矢量矢量(2D)。因此,交换将使用相同类型的变量(这是合乎逻辑的)执行。但是你试图用1D向量交换错误,这是编译器对你说的。
答案 1 :(得分:3)
你在这里做错的是你试图将vector< unsigned char >
与vector< unsigned char >
的向量交换,这是不可能的。
Vector arImage
的项目类型为unsigned char
,而临时类型为vector<vector<unsigned char> >
,因此临时项目为vector<unsigned char>
。
因此无法与vector<unsigned char>
交换unsigned char
。同样,您无法将vector< unsigned char >
与vector <vector< unsigned char >>
交换。
我希望它能解释一切。