什么';序列容器的迭代器类型是什么? 当我通过C++编程语言阅读时,发现这段话是

什么';序列容器的迭代器类型是什么? 当我通过C++编程语言阅读时,发现这段话是,c++,iterator,language-lawyer,C++,Iterator,Language Lawyer,传递给inserter()的迭代器必须是容器中的迭代器。对于序列容器,这意味着它必须是一个双向迭代器(以便可以在它前面插入)。例如,不能使用inserter()使迭代器插入到前向列表中 所以我开始寻找标准的相关部分来验证这一说法。然而,我只剩下这一段(23.2.6[关联.reqmts]第6段)与关联容器相关: 关联容器的迭代器属于双向迭代器类别 在标准中哪里可以找到序列容器的迭代器类型?标准分别说明序列容器的迭代器类型。e、 g 用于: 前向列表是一个支持前向迭代器和 用于: deque是一个序

传递给inserter()的迭代器必须是容器中的迭代器。对于序列容器,这意味着它必须是一个双向迭代器(以便可以在它前面插入)。例如,不能使用inserter()使迭代器插入到前向列表中

所以我开始寻找标准的相关部分来验证这一说法。然而,我只剩下这一段(23.2.6[关联.reqmts]第6段)与关联容器相关:

关联容器的迭代器属于双向迭代器类别


在标准中哪里可以找到序列容器的迭代器类型?

标准分别说明序列容器的迭代器类型。e、 g

用于:

前向列表是一个支持前向迭代器和

用于:

deque是一个序列容器,它支持随机访问迭代器([])


可以预期序列容器的迭代器类别至少是正向迭代器类别。

不是标准,而是一个。@πάνταῥεῖ 我也知道std::iterator_特性,但我认为这是在编译时完成的。你的意思是说序列容器的迭代器类型是实现定义的,因此它们不能在标准中声明?似乎其他序列容器的迭代器是实现定义的。我有点好奇,虽然它们是实现定义的,但是否有任何类型的下界可以保证这些容器具有某种级别的迭代器。@Il seobBae它们不是实现定义的,标准只是单独指定它们。N4606中有一条针对序列容器的语句,“序列容器的迭代器和常量迭代器类型应至少属于前向迭代器类别。”@Il seobBae-迭代器的实际类型未指定;实现编写自己的类型。(这不是“实现定义的”,因为标准规定,当某个实现定义时,实现必须记录它所做的事情)。该标准要求迭代器满足某些要求,例如作为前向迭代器或随机访问迭代器。这限制了实现可以做什么,而不需要任何特定的实现。