我有這個析構函數在運行時創建錯誤「vector iterator not derefereenable」。矢量迭代器不能在運行時在一個矢量上無法取消<vector <vector<A*> *> *>
的gridMatrix是一個std ::矢量<的std ::矢量<的std ::矢量< AtomsCell <原子<Ť> > * * * > > > *
我增加了類型名,並且還typedef的但我仍然有錯誤。
我會爲vect * 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);
}
如果有人想要創建錯誤的完整代碼,我很樂意給它,但我不認爲我們可以在論壇中附加文件。但仍然不是很大,所以如果你想要它,我可以在這裏複製過去。
感謝
typename和typedef不會在運行時產生任何影響。 – 2010-05-07 09:38:00
你爲什麼要把所有東西都指向一個指針?使用具體類型和智能指針,您可能根本不需要析構函數。 – 2010-05-07 09:44:27
謝謝,我知道這個typename和typdef在這裏沒用。 – marouanebj 2010-05-07 13:14:08