string :: iterator必然是random_access_iterator吗?

时间:2012-07-10 21:15:23

标签: c++ stl iterator

This页面指出string::iteratorstring::const_iterator是“编译器特定的迭代器类型”。这是否意味着string::iterator所在的类别不是random_access_iterator

4 个答案:

答案 0 :(得分:12)

ISO C ++ 03,21.3-2陈述:

  

(...)另外,因为basic_string支持的迭代器是   随机访问迭代器(...)

所以是的,那些必然是随机访问迭代器。

答案 1 :(得分:5)

关注N3376 21.4/3

  

basic_string支持的迭代器是随机访问迭代器。

对于这样的任务,手头有标准(或草稿)总是一个好主意。需要一段时间才能习惯在那里查找东西,但它是第一手资源。

答案 2 :(得分:3)

This pagestd::string::iteratorRandomAccessIterator,比cplusplus.com更值得信赖。

答案 3 :(得分:3)

这并不意味着它不是随机访问迭代器(正如其他答案所说,标准要求它是随机访问迭代器。)

这意味着确切的迭代器类型未指定,即它们可以是char*,也可以是std::string::__iterator__gnu_cxx::__normal_iterator<char, std::string>或其他。任何这些实现​​选择都是允许的,只要它满足随机访问迭代器的要求,并且可以通过名称string::iterator

来引用