Я пытаюсь вставить указатели в список, но каждый раз, когда я пытаюсь напечатать список, или проверить, что в списке, он говорит, что он пуст.Это означает, что моя вставка неверна, но я не понимаю почему, мои следующие классы:
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()
, являются просто геттерами и сеттерами.В любом случае, я запустил тестовый файл, который в значительной степени создает btree
, и вызывает функцию insert
, которая напрямую вызывает эту функцию addElement
.Но всякий раз, когда я пытаюсь распечатать список внутри btree, он говорит, что он пуст и ошибки seg.Я не понимаю, почему он не хранится.
Любая помощь будет признательна!
ПРИМЕЧАНИЕ: "Ва?"продолжает печатать