c++ - 在 STL 中,如何交换二维 vector

标签 c++ stl

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

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));

But this approach is not comfort.(this approach is no error)

我想使用 arImage[i][j]。

在这种方法中,我必须使用 (*arImage)[i][j]

最佳答案

你在这里做错的是你试图交换 vector< unsigned char > vector 为 vector< unsigned char >这是不可能的。

Vector arImageunsigned char 类型的项目而临时类型是 vector<vector<unsigned char> >所以临时项目是vector<unsigned char> .

所以这是有道理的,因为不能交换 vector<unsigned char>unsigned char .同样,您不能交换 vector< unsigned char >vector <vector< unsigned char >> .

我希望它能解释一切。

关于c++ - 在 STL 中,如何交换二维 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13511437/

相关文章:

c++ - STL 能否帮助解决内存碎片问题

c++ - 如何有效地解析日期时间( boost )

c++ - 动态大小的不可调整大小的数组

c++ - 透明地操作插入 ostream 的字符串

c++ - 如何解决在仅 header 库 (C++) 中定义的结构对其他结构类型的循环依赖?

c++ - 如何处理请求时可能不会终止的线程?

c++ - 为什么不应该派生自 C++ std 字符串类?

C++ bind第二题

c++ - 所有 system() 调用都存在 C++ 中的安全风险吗?

c++ - 使用 boost::is_any_of 的多个拆分 token