1

在头文件中,我将以下内容声明为公共成员变量:

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]

4

2 回答 2

3

您必须选择必须在您的中交换的索引temp

int index = 0;
temp[index].swap(arImage);

您将 temp 声明为向量的向量 (2D)。因此交换将使用相同类型的变量(这是合乎逻辑的)执行。但是你尝试用一维向量交换有什么问题,这就是编译器对你说的。

于 2012-11-22T11:13:12.797 回答
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 >>.

我希望它能解释一切。

于 2012-11-22T11:26:48.490 回答