所以,我想初始化LinkedList類使用initializer_list。LinkedList使用initializer_list
template<typename T>
SortedList<T>::SortedList(initializer_list<T> e){
head_= new Node<T>(*e.begin());
long intcheck = 0;
T old;
for (auto x : e){
if(intcheck > 0){
Node<T>* curr = new Node<T>(old);
if(head_ == curr){
head_->next_ = new Node<T>(x);
}
curr->next_ = new Node<T>(x);
}
old = x;
intcheck = 1;
}
}
我試圖打印頭_-> next_(沒有錯,我的打印功能)時收到賽格故障
首先,你應該檢查是否'initializer_list'是解引用之前空。接下來,編寫一個簡單的'for'語句來遍歷'[e.begin()+ 1,e.end())',並去掉那個'intcheck'的東西;這不適合基於'for'的範圍。那麼,對於你所顯示的代碼,「if(head_ == curr)」會如何?這可以解釋爲什麼打印head_-> next_'崩潰,你永遠不會分配任何東西給它。你需要重新思考你想要實現的邏輯。 – Praetorian 2014-12-02 00:51:39
並請使用智能指針 – 2014-12-02 01:04:20
'if(head_ == curr)'中的條件永遠不會成立。但無論如何,這個循環保證不在最初的列表中插入最後一個值。那真的是你想要的嗎?也考慮將'intcheck'的類型從'int'改爲'bool'並重命名,但是真的,這裏擺脫了所有的東西並從頭開始。 – 2014-12-02 01:46:26