в STL, как поменять 2-мерный вектор

В заголовочном файле я объявил следующее как общедоступную переменную-член:

vector< vector<unsigned char> > arImage;

В исходном коде я определяю темп

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]

1

Решение

То, что вы делаете неправильно, вы пытаетесь обменяться 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 >>,

Я надеюсь, что это все объясняет.

3

Другие решения

Вы должны выбрать индекс, который должен быть заменен в вашем temp:

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

Вы объявили temp как вектор векторов (2D). Таким образом, обмен будет выполняться с переменным того же типа (что логично). Но вы пытаетесь заменить 1D вектором, что не так, это то, что вам говорит компилятор.

3

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector