在 STL 中,如何交换二维向量

in STL, how to swap 2 dimension vector

本文关键字:STL 二维 向量 交换 何交换      更新时间:2023-10-16

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

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]

你在这里做错的事情是你试图用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 >>交换。

我希望它能解释一切。

你必须

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

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

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