6

页面声明string::iterator并且string::const_iterator是“编译器特定的迭代器类型”。这是否意味着它string::iterator属于 以外的类别random_access_iterator

4

4 回答 4

12

ISO C++03,21.3-2状态:

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

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

于 2012-07-10T21:18:39.387 回答
5

看着 N337621.4/3

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

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

于 2012-07-10T21:21:05.400 回答
3

这个页面std::string::iterator是一个RandomAccessIterator,并且比 cplusplus.com 更值得信赖。

于 2012-07-10T21:17:12.270 回答
3

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

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

于 2012-07-10T22:52:10.193 回答