我試圖插入指針到列表中,但每次嘗試打印列表或檢查列表中的內容時,它都顯示爲空。這意味着,我的插入是不正確的,但我不明白爲什麼,我的下面是一些:即使在插入元素後,列表仍保持爲空C++
namespace {
template <typename T>
pair < node<T>*, bool> addElement (const T& elem, btree<T>* bt) {
class list < node<T>* >::iterator itr = bt->level().begin();
if (bt->level().empty()) {
node <T>*n = new node<T>(elem, bt->max());
cout << n->getItem() << endl;
bt->addElem(itr, n);
return make_pair(n, true);
}
for (; itr != bt->level().end(); ++itr) {
if (elem < (*itr)->getItem()) {
node <T>* n = new node<T> (elem, bt->max());
(*itr)->previous()->addNext(n);
n->addPrev((*itr)->previous());
n->addNext(*itr);
(*itr)->addPrev(n);
bt->addElem(itr, n);
return make_pair(n, true);
} else if (elem == (*itr)->getItem()) return make_pair(*itr, false);
}
// other stuff + return statement
}
addElem執行以下操作:
void addElem (std::_List_iterator<node<T>*>& itr, node <T>* n) {
neighbours.insert(itr, n);
if (neighbours.empty()) cout << "wa?";
}
其中btree
類組成:
size_t maxNodeElems;
list < node<T>*> neighbours;
其他東西,如addPrev()
和previous()
只是getter和setter。無論如何,我在其上運行了一個測試文件,它幾乎構造了一個btree
,並且調用了一個insert
函數,該函數直接調用這個addElement
函數。但是,無論何時我試圖在btree內打印列表,它都會顯示空白和seg故障。我不明白爲什麼它不存儲。
任何幫助,將不勝感激!
注意:「Wa?」保持打印
這可能是你的顯示代碼不正確。顯示打印樹的代碼。 –
@ graham.reeds我在addElem裏寫了一個'if'語句,在'insert'語句後面說'如果鄰居是空的打印什麼東西'總是打印一些東西。 – SNpn
學習使用調試器 - 它會告訴你更多關於它爲什麼不起作用的信息。出於興趣,你在使用什麼IDE? – Skizz