В заголовочном файле я объявил следующее как общедоступную переменную-член:
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]
То, что вы делаете неправильно, вы пытаетесь обменяться 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). Таким образом, обмен будет выполняться с переменным того же типа (что логично). Но вы пытаетесь заменить 1D вектором, что не так, это то, что вам говорит компилятор.