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

时间:2012-11-22 11:09:43

标签: c++ stl

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

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]

2 个答案:

答案 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 >>交换。

我希望它能解释一切。

相关问题