This页面指出string::iterator
和string::const_iterator
是“编译器特定的迭代器类型”。这是否意味着string::iterator
所在的类别不是random_access_iterator
?
答案 0 :(得分:12)
ISO C ++ 03,21.3-2
陈述:
(...)另外,因为basic_string支持的迭代器是 随机访问迭代器(...)
所以是的,那些必然是随机访问迭代器。
答案 1 :(得分:5)
关注N3376 21.4/3
basic_string支持的迭代器是随机访问迭代器。
对于这样的任务,手头有标准(或草稿)总是一个好主意。需要一段时间才能习惯在那里查找东西,但它是第一手资源。
答案 2 :(得分:3)
This page说std::string::iterator
是RandomAccessIterator
,比cplusplus.com更值得信赖。
答案 3 :(得分:3)
这并不意味着它不是随机访问迭代器(正如其他答案所说,标准要求它是随机访问迭代器。)
这意味着确切的迭代器类型未指定,即它们可以是char*
,也可以是std::string::__iterator
或__gnu_cxx::__normal_iterator<char, std::string>
或其他。任何这些实现选择都是允许的,只要它满足随机访问迭代器的要求,并且可以通过名称string::iterator