2011-05-23 21 views
4

我一直在修改我的容器是STL兼容的。我修改了我的迭代器以具備必要的功能。它們都是隨機訪問迭代器。目前,它們適用於所有適用的STL算法。但是我的一個迭代器一旦失效就會失效(超出界限)。是否有必要擁有這個屬性?具體來說,我害怕end()迭代器不能遞減。注意它可以進行比較,甚至可以用其他有效的迭代器計算距離。目前迭代器的大小是4個字節,如果不是真的需要,我真的不想再添加4個字節。應該在傳遞最後一項後C++ Iterators能夠遞減?

由於提前,
傑姆

回答

4

對於random_access_iterator這是必需的。你將不得不實施它。具體而言,根據24.1.4.1的bidirectional_iterator(其中random_access_iterator是專業化的),遞減總是必須有效。

+0

感謝您的及時回答。 – 2011-05-23 11:43:07

3

std :: reverse_iterator取決於container.end()是否有效並且是可遞減的。