Я пытаюсь создать связанный список, который будет содержать другие связанные списки int, мне нужно иметь возможность доступа к связанному списку int из основного связанного списка.
Мой вопрос заключается в том, как мне указать узлы основного связанного списка, чтобы он удерживал заголовок связанного списка int?
Я создал статический список: dlist<Node<int>& > _plist;
У меня есть функция: insertToHead ( T const& dataToInsert);
Но из класса, который использует связанный список, у меня есть только указатель на голову, что-то вроде:Node<T>*
, и это дает мне ошибку, когда я пытаюсь передать Node<T>*
к T const&
,
это конструктор класса, который использует связанный список:
Set::Set(int numArray[], int size)
{
dlist<Node<int> > _plist; //static main list
dlist<int> _intList ; //int list
dlist<int> list; //int list
int i;
for (i=0; i < size; i++)
{
list.insertInOrder(numArray[i]); //insert in to int list
}
this->_intList = list;
this->_plist.insertToHead( _intList.getHead()); //gives an error
};
Это правильный способ сделать эту связь между основным списком и связанными списками int?
Со стандартными контейнерами вы не можете указывать на элементы, потому что основной дизайн состоит в том, что элементы управляются только контейнером.
То, что вы делаете, является контейнером контейнеров, т.е. в вашем случае dlist< dlist<int> >
,
В других более сложных случаях вам, однако, не повезло со стандартной библиотекой … например, если вы хотите, чтобы элементы, которые одновременно содержались в двух независимых связанных списках, не имеют решения со стандартными контейнерами, и вам нужно кодировать структура данных самостоятельно, или вы должны согласиться оплатить дополнительные расходы на некоторые операции.
Других решений пока нет …