2013-09-26 4 views
1

Я пытаюсь «переделать» класс списка для школьного задания. Однако я не знаю, как получить конструктор списка инициализаторов. То, что я до сих пор:конструктор списка инициализаторов для настраиваемого класса списка

в ListNodes

struct ListNode 
{ 
    ListNode(int value, ListNode* tail = nullptr) : data(value), next(tail) {} 
    int  data; 
    ListNode* next; 
}; 

в list.h

List(std::initializer_list<int>); 

в List.cc

List::List(std::initializer_list<int> il) 
{ 
    head_ = copy(il, il.size()); //some form of recursive copy-function 
} 

I d он знает, как продолжить работу с копией. Я пробовал std :: copy, но это просто дает мне segfault.

Кто-нибудь знает, что делать?

+1

Для каждого элемента списка, вы должны вызвать 'insert'. Кроме того, вы должны написать функцию 'insert'. –

+0

Да, но часть этого задания состоит в том, что все, что можно рекурсивно передать, должно быть рекурсивно передано. Есть ли у вас совет, как сделать вставку рекурсивно? –

ответ

1

Согласно этому page, вы можете перебирать Повсеместно в initializer_list с классическим начать/конец

+0

Да, но как это сделать рекурсивно? вызывая 'copy (il.begin(), il.end())'? и как это должно выглядеть? 'ListNode * copy (initializer_list :: iterator begin, initializer_list :: iterator end)'? –