2014-10-09 55 views
0

我有四個班,其中兩個迭代器:我的const和非const鏈接列表迭代器有什麼不同?

LinkedList<T> -- holds the pointer to dummy node 
LinkedListNode<T> -- Node with next and previous pointers and data T 
LinkedListIterator<T> -- holds a pointer to LinkedListNode 
LinkedListConstIterator<T> -- holds a pointer to LinkedListNode 

他們倆只需要實現前向迭代器的功能。

在這種情況下,我的const迭代器中的函數會有什麼不同?這是否意味着當我返回一個指針或任何給用戶時,我應該把它設置爲const?

+0

理想情況下,你的'LinkedListConstIterator'將它的指針保存爲'const LinkedListNode *',因此關於返回類型的決定更加明顯:「const」變體遍歷底層節點和值的常量視圖 - 除非要允許編輯列表結構(例如,刪除指向的元素通過一個常量迭代器),在這種情況下,您需要遍歷節點的非常量視圖,可能是'LinkedListNode *'。 – seh 2014-10-09 20:05:00

回答

0

看看const_iterators如何適用於任何STL容器(例如:std::list)。如果你正在尋找你的迭代器類的工作是類似的,那麼你應該返回一個常量值的引用,即const T&

相關問題