У меня есть этот деструктор, который создает ошибку во время выполнения «векторный итератор не может быть разыменован».
gridMatrix - это std :: vector *> *> *> *>
Я добавил typename, а также typedef, но у меня все еще есть ошибка.
Я перейду к этой идее vect of vect * vect *, чтобы использовать boost :: multi_array Я думаю, но все же я хочу понять, где это неправильно.
/// @brief destructor
~AtomsGrid(void) {
// free all the memory for all the pointers inside gridMatrix (all except the Atom<T>* )
//typedef typename ::value_type value_type;
typedef std::vector<AtomsCell< Atom<T>* >*> std_vectorOfAtomsCell;
typedef std::vector<std_vectorOfAtomsCell*> std_vectorOfVectorOfAtomsCell;
std_vectorOfAtomsCell* vectorOfAtomsCell;
std_vectorOfVectorOfAtomsCell* vectorOfVecOfAtomsCell;
typename std_vectorOfVectorOfAtomsCell::iterator itSecond;
typename std_vectorOfVectorOfAtomsCell::reverse_iterator reverseItSecond;
typename std::vector<std_vectorOfVectorOfAtomsCell*>::iterator itFirst;
//typename std::vector<AtomsCell< Atom<T>* >*>* vectorOfAtomsCell;
//typename std::vector<std::vector<AtomsCell< Atom<T>* >*>*>* vectorOfVecOfAtomsCell;
//typename std::vector<std::vector<AtomsCell< Atom<T>* >*>*>::iterator itSecond;
//typename std::vector<std::vector<AtomsCell< Atom<T>* >*>*>::reverse_iterator reverseItSecond;
//typename std::vector<std::vector<std::vector<AtomsCell< Atom<T>* >*>*>*>::iterator itFirst;
for (itFirst = gridMatrix.begin(); itFirst != gridMatrix.end(); ++itFirst) {
vectorOfVecOfAtomsCell = (*itFirst);
while (!vectorOfVecOfAtomsCell->empty()) {
reverseItSecond = vectorOfVecOfAtomsCell->rbegin();
itSecond = vectorOfVecOfAtomsCell->rbegin().base();
vectorOfAtomsCell = (*itSecond); // ERROR during run: "vector iterator not dereferencable"
// I think the ERROR is because I need some typedef typename or template ???!!!
// the error seems here event at itFirst
//fr_Myit_Utils::vectorElementDeleter(*vectorOfAtomsCell);
//vectorOfVecOfAtomsCell->pop_back();
}
}
fr_Myit_Utils::vectorElementDeleter(gridMatrix);
}
Если кому-то нужен полный код, создающий ошибку, я с удовольствием его сообщу, но я не думаю, что мы можем прикрепить файл на форуме. НО все же он не очень большой, поэтому, если вы хотите, я могу скопировать его сюда.
Спасибо