2011-06-25 328 views
2

可能重複:
C++: Check if iterator belongs to a listC++列表的迭代器

我如何檢查是否按功能收到一個迭代器屬於右側列表?

List<double> doublesList; 
List<double> doublesList2; 

// Can't mix iterators 
ASSERT_THROW(ListExceptions::ElementNotFound, doublesList.remove(doublesList2.begin())); 
ASSERT_THROW(ListExceptions::ElementNotFound, doublesList2.insert(5.0, doublesList.begin())); 

對於我自己的鏈表和我自己的迭代器,我提出了一個問題。 非常感謝。

+1

什麼是'List'?你的意思是'std :: list'? – ildjarn

+3

這取決於你的'List'的實現 – Anycorn

回答

5

對於標準容器,您不能。 C++標準庫將這件事留給程序員。事實上,迭代器invokes UB的比較。

使用本地容器,您可以將信息插入到迭代器中,以便記住它們屬於哪個容器;這使得迭代器更重,所以它通常在調試模式下才是明智的。

+0

-1你的答案是爲std :: list而不是這個人詢問什麼,顯然不是STL(「ListExceptions」和「List <>」) – SoapBox

+0

@SoapBox:實現那雖然太晚了。 –