2017-02-04 45 views
2

當我通過閱讀C++編程語言,我發現這一段話說什麼是序列容器的迭代器類型?

傳遞給插入迭代器()必須是一個迭代到容器中。對於序列容器,這意味着它必須是雙向迭代器(以便您可以在它之前插入)。例如,您不能使用插入()做一個迭代器插入到修飾符Modifiers ...

於是我開始發現,將驗證這種說法的標準的相關部分。然而,我留下了本段(23.2.6 [associative.reqmts]段落6)與僅關聯容器

關聯容器的迭代器是雙向迭代類別...

我在哪裏可以找到迭代器類型的序列容器的標準?

+0

不是_標準_,而是[很好的參考](http://en.cppreference.com/w/cpp/iterator/iterator_traits)。 –

+0

@πάνταῥεῖ我也知道std :: iterator_traits,但我認爲這是在編譯時完成的。你的意思是說序列容器的迭代器類型是實現定義的,以便它們不能在標準中聲明? – b1sub

回答

2

該標準規定了對於序列容器的分開。例如

對於forward_­list

forward_­list是支持前向迭代和...

deque對於一個容器:

deque是支持隨機的序列容器訪問迭代器([random.access.iterators])。

您可以預期序列容器的迭代器類別至少是前向迭代器類別。

+0

似乎其他序列容器的迭代器是_implementaion-defined_。我有點好奇,雖然它們是_implementation-defined_,有沒有任何種類的下界可以保證這些容器的某些級別的迭代器。 – b1sub

+1

@ Il-seobBae它們不是實現定義的,標準只是單獨指定它們。在N4606中有一個序列容器的聲明,「序列容器的迭代器和const_iterator類型至少應該是前向迭代器類別。」 – songyuanyao

+0

非常感謝。 – b1sub