嗨,我已經實現了我自己的列表和迭代器。奇怪的自己的迭代器behviour相比,從STL列表
我的主要代碼:
List<int> myList;
myList.push_back(1);
myList.push_back(2);
myList.push_back(3);
cout << std::string(30, '-') << endl;
//this shows 1 2
for(List<int>::iterator it = myList.begin() ; it != myList.end() ; ++it){
cout << *it << " ";
}
cout << endl;
//The same using stl shows 1 2 3 !!!???
list<int> myListSTL;
myListSTL.push_back(1);
myListSTL.push_back(2);
myListSTL.push_back(3);
cout << std::string(30, '-') << endl;
for(list<int>::iterator it = myListSTL.begin() ; it != myListSTL.end() ; ++it){
cout << *it << " ";
}
cout << endl;
我實現所有的方法爲自己的迭代器。 對於我自己的實現輸出爲:1 2 對於從STL實現輸出列表是:1 2 3
1)我開始()方法:
template<class T>
typename List<T>::iterator List<T>::begin(){
return iterator(head);
}
2)我的end()方法:
template<class T>
typename List<T>::iterator List<T>::end(){
Node * current = head;
while(current->next)
current = current->next;
return iterator(current);
}
3)重載操作!=
template<class T>
const bool List<T>::iterator::operator!=(const iterator & it){
return (node != it.node);
}
4)overloa ded preincrement operator:
template<class T>
typename List<T>::iterator List<T>::iterator::operator++(){
if(node->next){
node = node->next;
}
return iterator(node);
}
我分析了這一整天,我不知道我能做什麼錯。 Thak您提前任何形式的幫助!
謝謝您的解決方案!我只是不知道STL的想法,關於在最後的元素後指出! –